0

ボタンで線を引こうとしています。

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g2 = (Graphics2D) g;
    g2.setColor(Color.BLACK);
    g2.setStroke(new BasicStroke(2));
    for (int i=0;i<18;i++)
    {
        g2.draw(new Line2D.Double(2+i*20, 0, 2+i*20, 260));
        g2.draw(new Line2D.Double(0, 2+i*20, 360, 2+i*20));
    }
    g2.setColor(Color.RED);
}
public void drawDiagonallyLineDownLeft()
{
    int newXCoord=xDrawCoord+20;
    int newYCoord=yDrawCoord+20;
    g2.drawLine(xDrawCoord, yDrawCoord, newXCoord, newYCoord);
    xDrawCoord=newXCoord;
    yDrawCoord=newYCoord;
    repaint();
}

drawDiagonallyLineDownLeft メソッドは、Line を描画します。コンストラクターで使用しようとしましたが、正常に動作します。ここにJButtonのリスナーがあります

public void actionPerformed(ActionEvent arg0) 
            {
                panel.drawDiagonallyLineDownLeft();
                panel.revalidate();
                panel.repaint();
            }

それも正常に動作します。方法でコンソールにメッセージを出力しましたが、正常に出力されました。しかし、ボタンを押しても線はありません。どうにかして更新する必要があると思います。私が知っているすべての方法を使用しましたが、それでも機能しません。

4

1 に答える 1

1

repaint を呼び出すと、すべての描画が消去されるため、メソッドでペイントする必要がありますpaintComponent(Graphics g)

paintComponent(Graphics g)場合によっては自動的に呼び出されます (ウィンドウのサイズ変更など)。

于 2012-06-21T07:34:22.500 に答える