我正在尝试在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,因为它是一个内部类。将它作为一个单独的类解决了我的问题。
答案 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);
截图:
答案 1 :(得分:-2)
您的CustomPanel应该继承自JPanel。
在你的主要:
CustomPanel panel = new CustomPanel();