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);
}
このメソッドは、イベントディスパッチで呼び出されますパネル自体を描画するプロセスの一部としてのスレッド。このメソッドは、パネルのコンテンツを再度ペイントする必要があるたびに呼び出されるため、ラインが常に表示されることが保証されます。
背景が黒の場合は、デフォルトでその色に設定されるため、描画色を別の色に設定することも忘れないでください。