Java 使用自定义JPanel,但使用编辑器移动它
我试图在JavaSwing应用程序上绘制一些自定义图形,但在使用自定义JPanel类和图形编辑器时遇到了问题 现在我正在使用WindowBuilderPro(一个Eclipse插件) 问题是,如果我将JPanel作为JPanel的子类进行实例化,我就无法在图形编辑器中看到我的JPanel(也无法编辑它的任何属性)。以下是代码的相关部分:Java 使用自定义JPanel,但使用编辑器移动它,java,eclipse,swing,windowbuilder,Java,Eclipse,Swing,Windowbuilder,我试图在JavaSwing应用程序上绘制一些自定义图形,但在使用自定义JPanel类和图形编辑器时遇到了问题 现在我正在使用WindowBuilderPro(一个Eclipse插件) 问题是,如果我将JPanel作为JPanel的子类进行实例化,我就无法在图形编辑器中看到我的JPanel(也无法编辑它的任何属性)。以下是代码的相关部分: JPanel panel = new CustomPanel(); panel.setBounds(...); frmApplication.getConten
JPanel panel = new CustomPanel();
panel.setBounds(...);
frmApplication.getContentPane().add(panel);
上述方法不起作用,但如果我这样做:
JPanel panel = new JPanel();
panel.setBounds(...);
frmApplication.getContentPane().add(panel);
不要使用我的自定义类,那么它工作得很好,但当然我不能绘制任何自定义图形。我该如何解决这个问题
编辑
我刚刚意识到代码生成器无法解释自定义JPanel,因为它是一个内部类。将它作为一个单独的类解决了我的问题。您的CustomPanel应该继承自JPanel 主要是:
CustomPanel panel = new CustomPanel();
在
JPanel
上进行自定义绘制的步骤。请使用CustomPanel
类进行验证
- 重写
方法paintComponent()
- 始终调用
super.paintComponent(g)代码>内部重写
方法paintComponent
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);
截图:
为什么您的CostumPanel无法正常工作?你会得到什么错误?没有错误,它根本不会显示在图形编辑器中。当然,它是在运行应用程序时显示的。好吧,我在编写整个代码时才意识到这个问题。生成器无法检测内部类…哦,不,这是一个多么愚蠢的错误。他声明他的CustomPanel类已经从JPanel扩展。他的代码没有抛出NPE,所以你的答案没有回答这个问题。谢谢你的时间,但我已经在我的代码中这样做了。很高兴知道我做得很好。实际上,您只需要从上的Swing教程开始学习基础知识(例如,也可以覆盖getPreferredSize()以返回面板的大小)。另一个教程更具技术性,对解决这个问题没有帮助。