У меня есть класс PanelFormes, расширяющий JPanel, который я использую в качестве контейнера. У меня также есть два других JPanel, один для рисования фигуры, второй содержит кнопки. Эти два JPanel включены в первый, используя BorderLayout.
Одна из моих кнопок должна вызывать метод перекраски JPanel, где должны быть цифры. В конструкторе главного окна я делаю это:
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, я не только получаю фигуру, но и получаю странный снимок экрана с той самой кнопки, которую я только что нажал, которая вставлена в верхний левый угол моего JPanel. Мне очень интересно как ...
Если я попытаюсь нарисовать фигуру, вызвав ajoutForme напрямую, она работает просто отлично. Должно быть что-то с ActionListener, но я не могу понять, что ...
Я новичок в Java, любая помощь будет очень ценится.
Спасибо