我正在用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/