当前位置: 首页 > 知识库问答 >
问题:

Java Netbeans重写JPanel中的paint()方法

锺博耘
2023-03-14

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

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

问题是,
如何重写新创建的JPanelpaint()函数

我想在JPanel中绘制背景和一些球形,
我尝试使用getgraphics()函数来绘制和绘制,它完成了这项工作,但当我调用repaint()时,它就不再绘制了

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

类似问题:

(但它不使用Netbeans GUI构建器)

共有1个答案

越景天
2023-03-14

通常的方法是创建自己的JPanel子类(例如MyJPanel),并在其中实现Paint()方法。

实现该类后,切换到窗体,选择面板,然后在面板属性的“Code”选项卡中使用“Custom create Code”创建MyJPanel而不是JPanel的实例

这有一个小缺点,即每次要访问在MyJPanel中定义而不是在JPanel中定义的方法时,都需要将实例变量强制转换为MyJPanel。如果你从来不需要这样做,这是最快的方法。

如果您希望访问panel类中的其他方法(不需要每次都强制转换实例变量),那么删除现有的JPanel并使用新类添加一个“bean”会更容易。

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

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

 类似资料:
  • 问题内容: 我尝试了一些用Java绘图的源代码,它们工作正常,但是当我尝试制作自己的源代码时,我无法使用该方法!我再次查看了自己拥有的代码,并查看了Oracle页面中的一些教程,但是我似乎无法得知为什么它不起作用。有人可以检查一下,告诉我这里有什么问题吗? 主要方法:公共类主要 板: car.java: 没有错误,它向我显示了正确的图像宽度,计时器也触发,也可以正常工作,但是图像无法绘制!该方法只

  • 问题内容: 我正在记录我已经开发的Java程序,并且想知道如果仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 如果我有一个用方法调用的类,而有一个用该方法重写的子类,那么如果Car类中没有放置Javadoc,Carss驱动方法中是否会包含Vehicles驱动方法的文档? 问题答案: [I]想知道如果我仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 是。如果在子类上没有j

  • 问题内容: 用Java如何实现方法重写?在C ++中,我们有vtable的概念。.这是如何在Java内部实现的? 问题答案: 为了回答这个问题,特别是在虚拟机中如何实现覆盖,在Java虚拟机编程(Google图书链接)中有一篇文章。 VM将在所引用的类中寻找适当的方法定义,然后逐步处理继承栈。显然,在某些阶段将应用各种优化。 有关相关字节码指令的说明,请参见此处: invokevirtual会查看

  • 问题内容: 让我们看一下这个简单的Java代码: 我试图找出三个eat()方法的哪个版本。现在,当我键入 输出是“一般动物食用”,这是完全可以理解的。 当我键入以下内容时,会发生相同的事情: 输出是“吃干草的马”,这完全是合乎逻辑的。 这就是让我感到困惑的地方。当我键入: 我得到: 我希望编译器从Animal类引用而不是Horse对象引用中调用eat()方法。 所以我的问题是,当我有一个引用对象类

  • 我有一个程序,有多个层次,在底层我有一个JPanel,我把背景图像放在上面。除此之外,我还有一个JLayeredPane,其中包含一些可拖动的组件。我的问题是,当用户上传了背景图像时,可拖动的组件确实滞后了,我猜这是因为swing在拖动时一直在重新绘制背景图像。我的问题是,如果它无论如何,以确保图像没有重新绘制的所有时间?我在其中绘制图像的代码如下所示:

  • 我在同一个JPanel上有一个JButton和一个Point(由飞跃运动控制的运动)。但是,它们与顶部的JButton重叠。 有没有办法让我的点始终在JPanel应用程序窗口中的顶部? 这是一个代码片段: