我正在创建一个程序,用户可以在其中画线并擦除它们。我可以创建我的窗口并创建一个起作用的JMenuBar。如果未启用绘图功能,则一切正常。但是,启用绘图功能后,第二个JMenuBar会在原始图片下方绘制。此菜单栏不起作用,有时在绘制它时,屏幕上的所有图形也会重新绘制在下方。重新调整窗口大小可以解决这些问题。

我会发布图片,但是,我是新用户,不能。

我能够将问题缩小到我的paint()方法中的某个点。需要知道:拖动鼠标时,将调用repaint()方法。它使用我的paint()方法在Line类中调用paintObject(Graphics g)方法。 JMenuBar错误出现在顶级类中paint方法的末尾。

public void paint(Graphics g)//paint() in the top class
{
    for(int i = 0; i < objs.size(); i++)//Loop that finds all Tool(Line) objects that
        ((Tools)objs.get(i)).paintObject(g);//have been drawn, and redraws them.
    //This part of the code completes successfully with no error.

}//ERROR OCCURS HERE!!!!!!


我不知道为什么会这样。附带说明一下,屏幕上还有一个JTextField,直到高亮显示它才出现。至少感谢您阅读本文!

最佳答案

编辑:我会弯腰,我打赌你实际上是直接在顶层窗口(JFrame或JApplet或JDialog ...)上绘制,并且也将鼠标侦听器添加到此窗口中-因此组件图向下平移了一点。

解决方案是先尝试阅读这些教程,然后再尝试类似的相当复杂的事情。他们会告诉您如何正确绘制,包括我在评论中给出的建议,例如绘制JComponent或JPanel的paintComponent方法,并调用super.paintComponent(g)方法作为paintComponent的第一个方法调用覆盖。

07-28 02:39
查看更多