Нужно нарисовать линию и изображение на форме.
Форму создаю следующим образом:
package BattleShip2dPack;
import javax.swing.JFrame;
import java.awt.*;
public class BattleShip2dClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame Frm = new JFrame();
Canvas canvas = new Canvas();
Graphics g = Frm.getGraphics();
///g.drawLine(10, 20, 30, 40);
Frm.setLocation(400, 200);
Frm.setSize(500, 300);
Frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frm.setTitle("Морской бой");
Frm.setVisible(true);
Frm.setBackground(Color.black);
Frm.setForeground(Color.black);
Frm.add("Center", canvas);
//canvas.paintAll(g);
//canvas.update(g);
}
}
При попытке вызвать метод рисования линии
получаю:
Exception in thread "main" java.lang.NullPointerException
at BattleShip2dPack.BattleShip2dClass.main(BattleShip2dClass.java:19)
исключение ты получаешь потому, что пытаешься получить Graphics до того, как делаешь форму видимой (Frm.setVisible(true) ).
И в твоем случае ты пытаешься работать с gui не из потока EventDispatcher — это плохо.
Прочитай про метод paint(Graphics g) и для чего его нужно переопределять.
Также почитай про EventDispatcher.
Еще можешь загуглить SwingUtilites.invokeLater(Runnable r)