[英]Java Netbeans override paint() method in a JPanel
嗨,我是新手程序员
我想使用Netbeans IDE开发Java程序的GUI
使用Netbeans GUI Builder,
首先,我创建一个新的JFrame表单
然后,我从工具栏/调色板添加一个JPanel
问题是,
如何覆盖新创建的JPanel
的paint()
函数?
我想在JPanel
绘制背景和一些球体,
我尝试使用getGraphics()
函数进行绘制和绘制,它完成了工作,但是当我调用repaint()
时它不会再绘制了
我应该使用自定义paint()
函数创建一个实现JPanel
或JComponent
的新类吗?
(如果是这样,我怎样才能使用Netbeans GUI Builder?)
类似问题:
(但它不使用Netbeans GUI Builder)
通常的方法是创建自己的JPanel
子类(例如MyJPanel
)并在那里实现paint()
方法。
实现该类后,切换到表单,选择面板,然后使用面板属性的“代码”选项卡中的“自定义创建代码”创建MyJPanel
实例而不是JPanel
这有一个轻微的缺点,即每次要访问MyJPanel
中定义但不在JPanel
中定义的方法时,您需要将实例变量MyJPanel
为MyJPanel
。 如果您永远不需要这样做,这是最快捷的方法。
如果要访问面板类中的其他方法(每次都不转换实例变量),则更容易删除现有的JPanel并使用新类添加“Bean”。
这可以通过单击调色板中的“选择Bean”按钮来完成:
单击“确定”后,可以将面板放在表单上,NetBeans将创建MyJPanel
类型的实例变量(而不是JPane),并且可以访问该类中定义的所有方法。 请注意,必须先编译该类,然后才能以这种方式添加它!
嗨,我是一名新手程序员,我想使用Netbeans IDE开发Java程序的GUI
嗨! 由于您是一名新手程序员,因此将Netbeans用作常规文本编辑器。 为了做到这一点,创建普通的Java类而不是Forms,并自己编写代码。 原因是在必须处理Netbeans方法之前,您必须首先了解Swing。
我应该使用自定义paint()函数创建一个实现JPanel或JComponent的新类吗?
您当然只能扩展JPanel或JComponent,因为它们不是接口。
如果你坚持使用Netbeans Mattise GUI编辑器,那么创建一个新的JPanel Form并覆盖它的paintComponent
方法。
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// do your painting here...
g.setColor(Color.RED);
g.fillRect(6, 20, 12, 120);
g.setColor(Color.WHITE);
g.drawString("test", 50, 25);
}
最后,只需将组件添加到JFrame Form的构造函数中:
add(new MyNewJPanel());
pack();
确保您的JFrame的ContentPane具有适当的布局。
如果我理解的话,你不应该实现paint,因为它调用了paintBorder,paintChildren和paintComponent。 如果要使用组件处理边框和子项,请使用paint,但不建议使用。 请改用paintComponent。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.