如何在java上创建一个开/关按钮?

Dan*_*mbi 1 java swing jbutton

我需要一个按钮,当按下该按钮时,启用所有其他按钮,并将标签名称从"关"更改为"开",再次按下时,禁用所有按钮并再次将开关切换回"关闭" ,像一个开/关开关.问题是,我可以"打开它",但我无法将其关闭.

Hov*_*els 5

如果是Swing,那么您可能希望将要控制的按钮放入数组或ArrayList<AbstractButton>.这样,控制按钮的ActionListener可以简单地遍历数组或带有for循环的集合,setEnabled(true)在按钮上调用或false.考虑将控制按钮设为JCheckBox或JToggleButton.

注意,如果使用JToggleButton,则向其添加ItemListener.如果你这样做,就没有必要使用布尔值了.只需检查传递给ItemListener的itemStateChanged方法的ItemEvent的状态.如果getStateChanged()返回ItemEvent.SELECTED,则遍历您的JButton集合,启用所有按钮.如果它返回ItemEvent.DESELECTED,则执行相反的操作.

另请注意拜伦霍金斯的评论:

您可能希望ItemListener在按钮以编程方式切换时以及用户切换按钮时将接收事件.该ActionListener只拿到输入来自人类用户解雇.我经常遇到错误,因为我选错了.