3

我想了解更多有关图形以及如何使用它的信息。

我有这门课:

public class Rectangle 
{
    private int x, y, length, width;
    // constructor, getters and setters

    public void drawItself(Graphics g)
    {
        g.drawRect(x, y, length, width);
    }
}

还有一个像这样的非常简单的框架:

public class LittleFrame extends JFrame 
{
    Rectangle rec = new Rectangle(30,30,200,100);      

    public LittleFrame()
    {
        this.getContentPane().setBackground(Color.LIGHT_GRAY);
        this.setSize(600,400);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args)
    {
        new LittleFrame();
    }
}

我想做的就是把这个矩形添加到我的 LittleFrame 的容器中。但我不知道该怎么做。

4

1 回答 1

4

我建议您创建一个额外的类,其扩展JPanel如下:

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

import javax.swing.JPanel;

public class GraphicsPanel extends JPanel {

    private List<Rectangle> rectangles = new ArrayList<Rectangle>();

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

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        for (Rectangle rectangle : rectangles) {
            rectangle.drawItself(g);
        }
    }
}

然后,在您的LittleFrame班级中,您需要将此新面板添加到框架内容窗格中,并将您的添加Rectangle到要绘制的矩形列表中。在LittleFrame构造函数的最后,添加:

GraphicsPanel panel = new GraphicsPanel();
panel.addRectangle(rec);
getContentPane().add(panel);
于 2013-01-23T08:26:57.433 回答