Java Netbeans 覆盖 JPanel 中的 paint() 方法

标签 java swing netbeans

大家好,我是新手程序员
我想使用 Netbeans IDE 开发 Java 程序的 GUI

使用 Netbeans GUI 生成器,
首先,我创建一个新的 JFrame 窗体
然后,我从工具栏/调色板添加一个 JPanel

问题是,
如何覆盖新创建的 JPanelpaint() 函数?

我想在JPanel中绘制一个背景和一些球体,
我尝试使用 getGraphics() 函数进行绘制,它完成了工作,但是当我调用 repaint()

时它不再绘制了

我是否应该创建一个新类来实现 JPanelJComponent,而不是使用我自定义的 paint() 函数?
(如果是这样,我该如何使用 Netbeans GUI Builder 来实现?)

类似问题:

how to use jpanel with paint (or repaint)

(但它不使用 Netbeans GUI Builder)

最佳答案

通常的做法是创建您自己的 JPanel 子类(例如 MyJPanel)并在那里实现 paint() 方法。

实现该类后,切换到表单,选择面板,然后使用面板属性的“代码”选项卡中的“自定义创建代码”来创建 MyJPanel 的实例JPanel

Custom creation code

这有一个小缺点,即每次您想要访问在 MyJPanel 中定义但不在 中定义的方法时,都需要将实例变量转换为 MyJPanel >J面板。如果您永远不需要这样做,这是最快的方法。

如果您想访问面板类中的其他方法(无需每次都转换实例变量),删除现有的 JPanel 并使用新类添加“Bean”会更容易。

这是通过单击调色板中的“选择 Bean”按钮完成的:

Choose bean

单击确定后,您可以将面板放置在表单上,​​NetBeans 将创建类型为 MyJPanel(而不是 JPane)的实例变量,您可以访问该类中定义的所有方法。 请注意,必须先编译该类,然后才能以这种方式添加它!

关于Java Netbeans 覆盖 JPanel 中的 paint() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18416342/

相关文章:

java - 在 Java 中使用 final 关键字会提高性能吗?

java - JDateChooser focusListener

java - Swing - 如何从内部关闭表单?如何关闭窗体而不影响父窗体?

java - 如何在 Web 项目之外使用 JPA?

java - 在 NetBeans 中显示继承的方法

java - Netbeans 和 Subversion 提交错误

java - Google Drive Webhook 通知请求正文为空

java - 如何为用户输入无效添加异常(exception)?用户应输入名称,如果输入不是名称,则需要抛出异常

java - 如何在组合框中显示操作的名称

Java 'System.err.format' 和 '%n' 后跟 'System.out.println' , println 在中间打印