[英]Java - Swing - painting (adding another shapes on a JPanel)
創建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()方法中的代碼,如果可能的話)
您不想調用方法“添加”。 每個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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.