制作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()方法中,如果可能的话)
答案 0 :(得分:2)
您不想调用方法“添加”。每个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组件放在Event Dispatch线程(EDT)上。
创建GUI模型。
创建GUI框架类和面板类。
将“矩形”添加到GUI模型中。
打包JFrame。