我正在尝试使用Java AWT或Swing创建一个自定义组件,它将是一个矩形,里面有许多组件,包括其他矩形。像这样:
╔══════╗
║ ┌┐ ║
║ ├┘ ║
║ ║
╚══════╝
这需要成为我最好能用一条指令绘制的组件。类似于myFrame.add(new MyComponent())
。
你认为最好的方法是什么?有没有办法可以使用Rectangle
执行此操作,还是应该使用JPanel
或Swing中的某些内容?
答案 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);
}
}