如何在JFrame

问题描述

我在使用Netbeans GUI添加的JPanel内部绘制形状时遇到问题。现在,我不知道在哪里添加代码以在该JPanel内绘制一个圆,以及如何在现在处于空状态的JPanel中插入并调用它,等待绘制此形状。我已经将目标JPanel设置为Flow布局。 Netbeans Designer创建了一个大类,其中包含该JPanel的整个框架,我想将其保留在其中,因为我无法以任何其他方式真正添加它,因为Designer不允许我更改主要的initComponents方法,其中组件正在坐着。我一直在阅读教程和以前的文章,但没有人真正使用Netbeans Designer遇到过。 因此有人可以帮助我在此框架类中添加适当的方法以及如何从我要绘制的JPanel中调用它。JPanel是50x50像素。

因此,按照@Abra,我更改了一些代码:

所以我创建了一个新的Circle类,对其做了一些调整,因为我不想创建一个新框架,而是将其放入JPanel中。

public class Circle extends JPanel {
Color color;
public void circle(Color color)    {
    this.color = color;
    setPreferredSize(new Dimension (30,30));
}
public void paintComponent(Graphics g)    {
    super.paintComponent(g);
    g.drawOval(0,r,r);
    g.setColor(color);
}
private void showGUI() {
    JPanel panel = new JPanel();
    panel.add(this,FlowLayout.CENTER);
    panel.setVisible(true);
}       
}  
                                                                                                                        

然后,我在Designer中打开JPanel,并在initComponents方法中添加了运行它的代码:

circlePanel.setPreferredSize(new java.awt.Dimension(40,40));
    new Circle().showGUI();
    PanelDS.add(circlePanel); 
                   

                                                      

circlePanel是此图形的目标,位于PanelDS本身内。这样是行不通的,但是Netbeans没有显示代码错误。此外,如何将颜色转发到圈子课程。

解决方法

为了绘制JPanel,您需要覆盖paintComponent()的{​​{1}}方法。为了覆盖该方法,您需要创建一个扩展JPanel的类。我认为不存在可以为您生成所需代码的GUI设计器。因此,您必须编写扩展JPanel的类的代码。

这是一个最小的示例。它显示一个蓝色圆圈。

JPanel

这是运行上述代码时应看到的内容。

Blue circle

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...