7

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

使用 Netbeans GUI Builder,
首先,我创建一个新的 JFrame 表单
然后,我从工具栏/调色板添加一个 JPanel

问题是,
如何覆盖paint()新创建的功能JPanel

我想在里面绘制一个背景和一些球体JPanel
我尝试使用getGraphics()函数来绘制和绘制,它完成了这项工作,但是当我调用它时它不会再绘制了repaint()

我应该创建一个新的类来实现JPanel还是JComponent使用我的自定义paint()函数?
(如果是这样,我怎么能用 Netbeans GUI Builder 做到这一点?)

类似的问题:

如何使用带有油漆(或重绘)的jpanel

(但它不使用 Netbeans GUI Builder)

4

3 回答 3

9

执行此操作的常用方法是创建您自己的JPanel子类(例如MyJPanel)并在paint()那里实现该方法。

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

自定义创建代码

这有一个轻微的缺点,即MyJPanel每次您想要访问在 中定义MyJPanel但不在JPanel. 如果您从不需要这样做,这是最快的方法。

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

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

选豆

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

于 2013-08-24T09:04:18.663 回答
8

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

你好!由于您是新手程序员,请将 Netbeans 用作常规文本编辑器。为此,请创建普通的 Java 类而不是 Forms,然后自己编写代码。原因是您必须先了解 Swing,然后才能处理 Netbeans 方法。

我应该使用我的自定义paint() 函数创建一个实现 JPanel 或 JComponent 的新类吗?

您当然只能扩展 JPanel 或 JComponent,因为它们不是接口。

如果您坚持使用 Netbeans Mattise GUI 编辑器,则创建一个新的 JPanel 表单并覆盖它的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 具有适当的布局。

于 2013-08-24T09:26:00.963 回答
1

如果我理解得很好,你不应该实现paint,因为它调用了paintBorder、paintChildren 和paintComponent。如果要使用组件处理边框和子项,请使用绘制,但不建议这样做。请改用paintComponent。

于 2013-08-24T08:25:50.430 回答