簡體   English   中英

Java - Swing - 繪畫(在JPanel上添加其他形狀)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM