我正在编写一个程序,它只是一个简单的形状制作器,我应该在我的主面板上,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()。
答案 0 :(得分:1)
不要覆盖ShapeMakerPanel中的paintComponent();在drawingArea的类中覆盖它(如果drawingArea是普通的JPanel,则创建一个新的JPanel子类)。通常,您需要子类化要绘制的组件。
答案 1 :(得分:0)
另外,当我绘制形状时,我一次只能有一个,因为每次我开始一个新的,面板都被擦干净了。
有关解决此问题的几种方法,请参阅Custom Painting Approaches。