簡単な描画プログラムを作成したいと思います。ここで Graphics2Dオブジェクトは常にNullPointerExceptionを返します
I私のプログラムののmousePressedとmouseDraggedイベント:私は、メソッドpaintComponentをオーバーライドgraphics2D.drawLine(touch.x, touch.y, p.x, p.y);
この行の
private void mousePressed(java.awt.event.MouseEvent evt) {
touch = evt.getPoint();
pressed = true;
}
private void mouseDragged(java.awt.event.MouseEvent evt) {
Point p = evt.getPoint();
if(pressed){
graphics2D.drawLine(touch.x, touch.y, p.x, p.y);
}
repaint();
}
しかし、私はいろいろ書い描画しようとすると、それは常に与える"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"
public void paintComponent(Graphics g){
if(image == null){
image = createImage(getSize().width, getSize().height);
graphics2D = (Graphics2D)image.getGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
clear();
}
g.drawImage(image, 0, 0, null);
}
そして私は明確な方法があります:
public void clear(){
graphics2D.setPaint(Color.white);
graphics2D.fillRect(0, 0, getSize().width, getSize().height);
graphics2D.setPaint(Color.black);
repaint();
}
どうすればよいですか?あなたはgraphics2D
については何も指定していない
おかげ
paintComponent(Graphics g)メソッドもオーバーライドしました – CanCeylan
@CanCeylan:あなたのラインをmouseDragged(...)メソッドで描画することはできません。それは動作しません。 MouseEventから取得したポイントを格納し、paintComponent(...)に線画を描画します。 –
しかし私の出発点はこのリンクです:http://forum.codecall.net/java-tutorials/31180-java-mini-paint-program.html。そのリンクでは、私はmouseDraggedメソッドで線を引くことができます。私は自分のGUIにこのスキーマを適用したい – CanCeylan