Java:需要有关Graphics的解释

时间:2013-01-23 08:16:20

标签: java swing graphics

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

我有这堂课:

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的容器中。但我不知道该怎么做。

1 个答案:

答案 0 :(得分: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);