我正在用Java编写一个简单的绘画程序。在所有绘画应用程序中,都有针对brushTool,sprayTool,sprayTool ...的按钮。此工具具有自己的类,该类扩展到MouseAdapter。他们正在按自己的方式工作。但是,当我在选择另一个工具之后又选择了一个工具时,问题就开始了,按钮和它们的ActionListeners都继续执行,并且它们同时执行写操作。我的意思是,如果我选择带有矩形工具的lineTool(绘制直线),我也有一个对角线。这是我的两个按钮的示例。我要做的是单击另一个按钮时停止当前操作。你们能帮我吗

brushBotton.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            pen = new PenTool(mainDrawArea);
            mainDrawArea.addMouseListener(pen);
            mainDrawArea.addMouseMotionListener(pen);
            }
    });

rectangleButton.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
                shapeToolbar.setVisible(false);
                rect = new RectangleTool(mainDrawArea);
                rect.setStrokeSize(strokeInt);
                mainDrawArea.addMouseListener(rect);
                mainDrawArea.addMouseMotionListener(rect);
            }
        });

最佳答案

每次单击按钮时,您不能一直将MouseListener添加到绘图区域。

相反,您需要跟踪当前的MouseListener。然后,当您单击按钮时,您需要:


删除当前的MouseListener
添加新的MouseListener

关于java - 如何避免同时工作两个JButton,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34271190/

10-10 19:11