gpt4 book ai didi

Java - Swing - 绘画(在 JPanel 上添加其他形状)

转载 作者:行者123 更新时间:2023-12-02 07:03:08 28 4
gpt4 key购买 nike

创建 JFrame、在其上添加 JPanel 并在 JPanel 上绘制矩形的类

class Frame {
JFrame frame;
myPanel panel;

void draw() {
frame = new JFrame ("qwertz");
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setSize(300,200);

panel = new myPanel();
panel.setLayout(null);
frame.add(panel);

myPanel.a = 50;
myPanel.b = 30;
}
void add() {
//
}}

第二个类是第一个类使用的 JPanel

class myPanel extends JPanel {
static int a;
static int b;
public void paint(Graphics g) {
g.drawRect(a,a,b,b);
}}
<小时/>

在面板上添加另一个矩形的最简单方法是什么?
(如果可能的话,我希望将其添加到第一个类的 add() 方法中)

最佳答案

您不想调用方法“add”。每个 Swing 组件都有一个 add 方法。

创建一个 GUI 模型类,其中包含您想要定义的任意数量的矩形。

import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;

public class RectangleModel {

private List<Rectangle> rectangles;

public RectangleModel() {
this.rectangles = new ArrayList<Rectangle>();
}

public void addRectangle(int x, int y, int width, int height) {
this.rectangles.add(new Rectangle(x, y, width, height));
}

public void addRectangle(Rectangle rectangle) {
this.rectangles.add(rectangle);
}

public void draw(Graphics g) {
for (Rectangle rectangle : rectangles) {
g.drawRect(rectangle.x, rectangle.y, rectangle.width,
rectangle.height);
}
}

}

修改您的 JPanel,使其看起来像这样:

class MyPanel extends JPanel {
private RectangleModel model;

public MyPanel(RectangleModel model) {
this.model = model;
this.setPreferredSize(new Dimension(300, 200));
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
model.draw(g);
}}
}

现在,您的主类所要做的就是:

  • 执行 SwingUtilities.invokeLater 将所有 GUI 组件置于事件调度线程 (EDT) 上。

  • 创建您的 GUI 模型。

  • 创建 GUI 框架类和面板类。

  • 将矩形添加到您的 GUI 模型中。

  • 打包 JFrame。

关于Java - Swing - 绘画(在 JPanel 上添加其他形状),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403073/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com