使用自定义JPanel但使用编辑器移动它

时间:2014-05-10 14:29:54

标签: java eclipse swing windowbuilder

我正在尝试在Java Swing应用程序上绘制一些自定义图形,但是我在使用自定义JPanel类和图形编辑器时遇到了麻烦。

现在我正在使用WindowBuilder Pro(Eclipse插件)。

问题是,如果我将JPanel作为JPanel的子类实例化,我就无法在图形编辑器中看到我的JPanel(也没有编辑它的任何属性)。这是代码的相关部分:

JPanel panel = new CustomPanel();
panel.setBounds(...);
frmApplication.getContentPane().add(panel);

以上情况不起作用,但如果我这样做了:

JPanel panel = new JPanel();
panel.setBounds(...);
frmApplication.getContentPane().add(panel);

不要使用我的自定义类,然后它工作得很好,但当然我无法绘制任何自定义图形。我该如何解决这个问题?

修改

我刚刚意识到代码生成器无法解释自定义JPanel,因为它是一个内部类。将它作为一个单独的类解决了我的问题。

2 个答案:

答案 0 :(得分:1)

JPanel上执行自定义绘画的步骤。请通过您的CustomPanel课程验证。

  • 覆盖paintComponent()方法
  • 始终在覆盖super.paintComponent(g);方法
  • 内调用paintComponent
  

有关执行自定义绘画的深入讨论,请查看 Painting in AWT and Swing

示例代码:

class CustomJPanel extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.drawString("Hello", 10, 10);
        g.fillRect(20, 20, 50, 50);
    }
}

JPanel panel = new CustomJPanel();
frame.getContentPane().add(panel);

截图:

enter image description here

答案 1 :(得分:-2)

您的CustomPanel应该继承自JPanel。

在你的主要:

CustomPanel panel = new CustomPanel();