在Java AWT中创建自定义组件

时间:2010-10-07 21:07:28

标签: java awt

我正在尝试使用Java AWT或Swing创建一个自定义组件,它将是一个矩形,里面有许多组件,包括其他矩形。像这样:

╔══════╗
║  ┌┐  ║
║  ├┘  ║
║      ║
╚══════╝

这需要成为我最好能用一条指令绘制的组件。类似于myFrame.add(new MyComponent())

你认为最好的方法是什么?有没有办法可以使用Rectangle执行此操作,还是应该使用JPanel或Swing中的某些内容?

2 个答案:

答案 0 :(得分:2)

“许多组件” - >带有布局管理器的JPanel放置每个组件

“画” - >覆盖组件上的绘制

查看Java Tutorial Swing部分。

答案 1 :(得分:1)

我建议扩展JPanel并覆盖它的paintComponent()方法。有关此方面的帮助,请参阅another answer of mine

基本上,当您在面板上“绘制”矩形时,您需要将其保存为Jpanel的成员。然后,在paintComponent方法中,您只需绘制已保存在JPanel中的所有矩形。

这就是我实现'draw'方法的方法:

List<Rectangle> recs;
List<Stroke> strokes;
List<Color> colors;
public void drawRectangle(Rectangle newR, Stroke stroke, Color c){
    recs.add(newR);
    strokes.add(stroke);
    colors.add(c);
}

并且,paint组件看起来类似于:

protected void paintComponent(Graphics g){
    super.paintComponent(g);
    for (int i = 0; i < recs.size(); i ++) {
        g.setColor(colors.get(i));
        g.setStroke(strokes.get(i));
        g.drawRectangle(recs);
    }
}