Java 调用repaint()时异常的JPanel行为
我有一个PanelFormes类,它扩展了我用作容器的JPanel。我还有另外两个JPanel,一个用来画一些图形,第二个包含按钮。这两个JPanel包含在第一个JPanel中,使用BorderLayout 我的一个按钮应该调用JPanel的repaint方法,其中应该有数字。在我的主窗口构造函数中,我执行以下操作: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
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
。