Java 调用repaint()时异常的JPanel行为

Java 调用repaint()时异常的JPanel行为,java,swing,jpanel,actionlistener,Java,Swing,Jpanel,Actionlistener,我有一个PanelFormes类,它扩展了我用作容器的JPanel。我还有另外两个JPanel,一个用来画一些图形,第二个包含按钮。这两个JPanel包含在第一个JPanel中,使用BorderLayout 我的一个按钮应该调用JPanel的repaint方法,其中应该有数字。在我的主窗口构造函数中,我执行以下操作: boutonGetForme.addActionListener(new ActionListener() { public void actionPerformed(Ac

我有一个PanelFormes类,它扩展了我用作容器的JPanel。我还有另外两个JPanel,一个用来画一些图形,第二个包含按钮。这两个JPanel包含在第一个JPanel中,使用BorderLayout

我的一个按钮应该调用JPanel的repaint方法,其中应该有数字。在我的主窗口构造函数中,我执行以下操作:

boutonGetForme.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

        ajoutForme(rect);
    }
});
我的主窗口类中的方法ajoforme:

// 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();  
}
最后,课堂小组形成:

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);
}            
}
我想我给了你所有相关的信息。 我的问题是,当我试图用button button Forme绘制一个图形时,我不仅得到了图形,而且还得到了我刚刚按下的按钮的一些奇怪的截图副本,粘贴在我的JPanel的左上角,我真想知道如何。。。 如果我试图通过直接调用AjoForme来绘制图形,那么效果很好。ActionListener肯定有什么问题,但我不明白。。。 我是一名Java新手,非常感谢您的帮助。 谢谢

如果
设置不透明(true)
,请验证是否完全渲染了由组件边界定义的区域;如果没有,请使用
setOpaque(false)
。如果问题仍然存在,请编辑您的问题以包括显示工件的


附录:另见。

另见此。我添加了此。setOpaque(true);在我的FormePanel构造函数中,问题仍然存在。如何知道我是否完全呈现了由组件绑定定义的区域?无论如何,我将尝试设置不透明(false;)我把它放在我的JPanel构造函数中是对的吗?好的,它与setOpaque一起工作(false)!!:D非常感谢你,上帝。。。然而,你能给我解释一下这个魔法吗???@CTZStef:我在上面添加了一个链接;例如,
MyPanel
只绘制交替瓷砖,因此
不透明
必须为
false