代码之家  ›  专栏  ›  技术社区  ›  Christian Mann

在Java AWT中创建自定义组件

  •  0
  • Christian Mann  · 技术社区  · 15 年前

    我试图用Java AWT或Swing创建一个自定义组件,它将是一个包含许多组件在内的矩形,包括其他矩形。像这样:

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

    这需要是一个组件,我最好用一条指令来绘制。类似的东西 myFrame.add(new MyComponent()) .

    你认为最好的方法是什么?有什么方法可以用 Rectangle 或者我应该一起去 JPanel 或者是秋千?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    我建议延长 JPanel 最重要的是 paintComponent() 方法。见 another answer of mine 想得到一些帮助。

    基本上,当在面板上“绘制”一个矩形时,您将希望将其保存为 Jpanel . 然后,在 paintComponent 方法,只需绘制保存在 面板 .

    这是我将如何实现“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);
    }
    

    而且,油漆成分看起来类似于:

    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);
        }
    }
    
        2
  •  2
  •   Thorbjørn Ravn Andersen    15 年前

    “多个组件”->jpanel和布局管理器一起放置每个组件

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

    检查Java教程Swing部分。