我在 JPanel 内部绘制已使用 Netbeans GUI 添加的形状时遇到问题。现在,我不知道在哪里添加用于在该 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, 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()
的方法JPanel
。为了重写该方法,您需要创建一个扩展的类JPanel
。我认为不存在可以为您生成所需代码的 GUI 设计器。所以你必须编写扩展类的代码JPanel
.
这是一个最小的例子。它显示一个蓝色圆圈。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class Drawing2 extends JPanel {
private JFrame frame;
public Drawing2() {
setPreferredSize(new Dimension(100, 100));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillOval(25, 25, 50, 50);
}
private void showGui() {
frame = new JFrame("Drawing");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(this, BorderLayout.CENTER);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
new Drawing2().showGui();
}
}
这是运行上述代码时应该看到的内容。
![Blue circle](https://i.stack.imgur.com/WUjrp.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)