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

top*_*her 7 java swing netbeans

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

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

问题是,
我怎样才能覆盖paint()新创建的功能JPanel

我想绘制一个背景和一些球体JPanel,
我尝试使用getGraphics()绘画和绘制功能,它完成了工作,但是当我打电话时它不再画画了repaint()

我应该创建一个新的实现类,JPanel或者JComponent使用我的自定义paint()函数吗?
(如果是这样,我怎样才能使用Netbeans GUI Builder?)

类似问题:

如何使用jpanel与油漆(或重绘)

(但它不使用Netbeans GUI Builder)

a_h*_*ame 9

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

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

自定义创建代码

这有一个轻微的缺点,即MyJPanel每次要访问在MyJPanel但不在其中定义的方法时,您需要将实例变量强制转换为JPanel.如果您永远不需要这样做,这是最快捷的方法.

如果要访问面板类中的其他方法(每次都不转换实例变量),则更容易删除现有的JPanel并使用新类添加"Bean".

这可以通过单击调色板中的"选择Bean"按钮来完成:

选择豆子

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


Cos*_*lis 7

嗨,我是一名新手程序员,我想使用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);
}
Run Code Online (Sandbox Code Playgroud)

最后,只需将组件添加到JFrame Form的构造函数中:

    add(new MyNewJPanel());
    pack();
Run Code Online (Sandbox Code Playgroud)

确保您的JFrame的ContentPane具有适当的布局.