在JPanels上绘画

时间:2011-03-16 03:40:07

标签: java drawing jpanel paint layer

我正在编写一个程序,它只是一个简单的形状制作器,我应该在我的主面板上,ShapeMakerPanel,以及那个面板上的2个面板,controlPanel(它包含用于选择形状和清除它的按钮, etc)和drawingArea(实际绘制形状的地方),但无论我做什么,我都无法让绘图显示在drawingArea上。如果我只使用paintComponent并注释掉add(drawingArea)那么绘图的东西可以工作,但是在底层,我如何在drawingArea Jpanel上绘画。此外,当我绘制形状时,我一次只能有一个,因为每次我开始一个新的,面板都被擦干净了。

    super.paintComponent(g);
    g.setColor(penColor);
    if (p1 != null && p2 != null)
    {
        if (shapeChoice.getSelectedItem().equals("Line"))
        {
            Line line = new Line(p1.x, p1.y, p2.x, p2.y);
            line.draw(g);
        }
    }

我知道它的super.paintComponent(g)搞砸了我,但没有它,当我拖动鼠标时,它会画出数百行。

如果你想知道Line类,我们必须为我们绘制的每个形状创建一个类,draw()方法只使用该行的坐标并将它们放入drawLine()。

2 个答案:

答案 0 :(得分:1)

不要覆盖ShapeMakerPanel中的paintComponent();在drawingArea的类中覆盖它(如果drawingArea是普通的JPanel,则创建一个新的JPanel子类)。通常,您需要子类化要绘制的组件。

答案 1 :(得分:0)

  

另外,当我绘制形状时,我一次只能有一个,因为每次我开始一个新的,面板都被擦干净了。

有关解决此问题的几种方法,请参阅Custom Painting Approaches