【发布时间】:2020-09-22 13:40:41
【问题描述】:
我在使用 Netbeans GUI 添加的 JPanel 内绘制形状时遇到问题。现在,我不知道在哪里添加用于在该 JPanel 内绘制一个圆圈的代码,以及如何在现在空置的 JPanel 中插入和调用它,等待绘制这个形状。我已经将目标 JPanel 设置为 Flow 布局。 Netbeans Designer 创建了一个大类,其中我有这个 JPanel 的整个框架,我想将它保留在其中,因为我不能以任何其他方式添加它,因为 Designer 不允许我更改 main 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, 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 显示代码中没有错误。另外,如何将颜色转发给圆形类。
【问题讨论】:
-
阅读 Custom Painting 上的 Swing 教程中的部分以获取基本的工作示例。对于更复杂的示例,您可以查看Custom Painting Approaches
-
嗨@camickr,我读了所有这些,但我仍然不知道该把什么放在哪里,因为每个例子都有很多类,我担心我不能真正遵循,有没有一个优雅的解决方案?
-
您对 Netbeans 设计器的依赖对您没有帮助。按照@camickr 链接的教程,学习编写自己的 Swing 组件。
-
@Dino,有没有优雅的解决方案? - 你已经得到了优雅的解决方案。从教程中的工作解决方案开始。然后,一旦您了解了它的工作原理,您就可以添加另一个功能并进行测试。当它起作用时,添加更多功能和测试。在测试之前不要尝试编写整个应用程序!
标签: java swing netbeans graphics jpanel