/ / JPanelを描画できない-java、swing、awt、graphics2d

JPanelを描画できません - Java、swing、awt、graphics2d

JPanelを利用しようとしています。関数が drawField と呼ばれ、何も描画しません。その理由は何でしょうか?

private void drawField() {
try {
Graphics2D field = (Graphics2D) jPanel2.getGraphics();
field.drawLine(0, 0, 100 , 100);
}catch(Exception exc) { exc.printStackTrace();}
}

メインクラスコンストラクターから呼び出されます。

回答:

回答№1は4

上書きする paintComponent パネルのメソッド。

に描くことはできません JPanel コンストラクターで。 それを行うのは不適切な時間であり、描画したものはすべてパネルがペイントされるとすぐに上書きされます。これは、表示されるとすぐに発生するため、描画した内容は表示されません。

代わりに、 paintComponent このような方法:

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawLine(0, 0, 100, 100);
}

このメソッドは、イベントディスパッチで呼び出されますパネル自体を描画するプロセスの一部としてのスレッド。このメソッドは、パネルのコンテンツを再度ペイントする必要があるたびに呼び出されるため、ラインが常に表示されることが保証されます。

背景が黒の場合は、デフォルトでその色に設定されるため、描画色を別の色に設定することも忘れないでください。