私はコンテナとして使用するJPanelを継承するPanelFormesクラスを持っています。私はまた2つのJPanelを持っています。一つはJPanel、もう一つはボタンがあります。これらの2つのJPanelは、BorderLayoutを使用して、最初のJPanelに含まれています。repaint()を呼び出すときの奇妙なJPanelの動作
私のボタンの1つは、数字が必要なJPanelのrepaintメソッドを呼び出すことになっています。私のメインウィンドウのコンストラクタで、私はそれを行う:
boutonGetForme.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ajoutForme(rect);
}
});
方法ajoutFormeを、私のメインウィンドウクラスに:
// Methode ajout de forme, normalement appelee par le controleur
public void ajoutForme(Forme f) {
//dire au jpanel quelle forme on veut dessiner et comment
jpanel.definirForme(f);
//mettre a jour le jpanel
jpanel.repaint();
}
そして最後にクラスPanelFormes:
package gui;
import java.awt.Graphics;
import javax.swing.JPanel;
public class PanelFormes extends JPanel {
private Forme f;
PanelFormes() {
f = new Rectangle(1,1,1,1);
}
public void definirForme(Forme f) {
this.f = f;
}
public void paintComponent(Graphics g) {
//dessiner la forme
f.dessine(g);
}
}
私は私だと思いますすべての関連情報を提供しました。 私の問題は、buttonGetFormeボタンを使ってFigureをペイントしようとすると、Figureを取得するだけでなく、ちょうど私が押したボタンの奇妙なスクリーンショットコピーが、私の左上隅にペーストされますJPanel、私は本当にどう思っていますか? ajoutFormeを直接呼び出してFigureをペイントしようとすると、正常に動作します。 ActionListenerで何かがあるに違いないが、私は何を理解することができない... 私はJavaでnewbee、任意のヘルプは非常に高く評価されます。 ありがとう
これも[回答](http://stackoverflow.com/a/9029316/230513)を参照してください。 – trashgod
this.setOpaque(true)を追加しました。私のFormePanelコンストラクタでは、問題はまだそこにあります。 – CTZStef