在JavaAWT中创建自定义组件

在JavaAWT中创建自定义组件,java,awt,Java,Awt,我正在尝试使用JavaAWT或Swing创建一个自定义组件,它将是一个包含许多组件的矩形,包括其他矩形。大概是这样的: ╔══════╗ ║ ┌┐ ║ ║ ├┘ ║ ║ ║ ╚══════╝ 这需要一个组件,我最好用一条指令来画。类似于myFrame.add(newmycomponent()) 你认为最好的方法是什么?有没有一种方法可以使用Rectangle,或者我应该使用JPanel或者Swing中的东西来实现这一点?我建议扩展JPanel并覆盖它的paintCompone

我正在尝试使用JavaAWT或Swing创建一个自定义组件,它将是一个包含许多组件的矩形,包括其他矩形。大概是这样的:

╔══════╗
║  ┌┐  ║
║  ├┘  ║
║      ║
╚══════╝
这需要一个组件,我最好用一条指令来画。类似于
myFrame.add(newmycomponent())


你认为最好的方法是什么?有没有一种方法可以使用
Rectangle
,或者我应该使用
JPanel
或者Swing中的东西来实现这一点?

我建议扩展
JPanel
并覆盖它的
paintComponent()
方法。请参阅以获取有关此方面的帮助

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

以下是我将如何实现“绘制”方法:

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);
}
列表记录;
列出笔画;
列出颜色;
公共空心drawRectangle(矩形新建、笔划笔划、颜色c){
记录添加(新记录);
笔划。添加(笔划);
添加(c);
}
并且,油漆组件的外观类似于:

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);
    }
}
受保护的组件(图形g){
超级组件(g);
对于(int i=0;i
我建议扩展
JPanel
并重写它的
paintComponent()
方法。请参阅以获取有关此方面的帮助

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

以下是我将如何实现“绘制”方法:

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);
}
列表记录;
列出笔画;
列出颜色;
公共空心drawRectangle(矩形新建、笔划笔划、颜色c){
记录添加(新记录);
笔划。添加(笔划);
添加(c);
}
并且,油漆组件的外观类似于:

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);
    }
}
受保护的组件(图形g){
超级组件(g);
对于(int i=0;i
“许多组件”->JPanel,带有布局管理器,用于放置每个组件

“绘制”->替代零部件上的绘制

检查Java教程Swing部分。

“许多组件”->JPanel,使用布局管理器放置每个组件

“绘制”->替代零部件上的绘制

检查Java教程Swing部分