获取 JToggleButton 的状态
Posted
技术标签:
【中文标题】获取 JToggleButton 的状态【英文标题】:Getting the state of JToggleButton 【发布时间】:2011-11-23 09:12:21 【问题描述】:说我有一个
JToggleButton but = new JToggleButton("OK") ;
现在我需要but
被点击时的状态。我的意思是我需要知道它是否被点击。
【问题讨论】:
【参考方案1】:您也可以使用 itemListener 的 itemStateChanged 方法,如下所示:
JToggleButton jtb = new JToggleButton("Press Me");
jtb.addItemListener(new ItemListener()
public void itemStateChanged(ItemEvent ev)
if(ev.getStateChange()==ItemEvent.SELECTED)
System.out.println("button is selected");
else if(ev.getStateChange()==ItemEvent.DESELECTED)
System.out.println("button is not selected");
);
你们中的一些人想知道jtb
后者在使用isSelected()
方法时的状态
System.out.println(jtb.isSelected());
if(jtb.isSelected())
System.out.println("button is selected");
else
System.out.println("button is not selected");
【讨论】:
从 Java8 开始你可以使用 lambda 表达式 but.addItemListener((ItemEvent ev) -> /* 你的代码 */ 【参考方案2】:要响应点击,请将 ActionListener 添加到 JToggleButton。要找到它的状态,就像 JRadioButton 一样,调用它的 isSelected() 方法。
例如,
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;
public class ToggleTest
public static void main(String[] args)
JToggleButton toggleBtn = new JToggleButton("Toggle Me!");
toggleBtn.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
JToggleButton tBtn = (JToggleButton)e.getSource();
if (tBtn.isSelected())
System.out.println("button selected");
else
System.out.println("button not selected");
);
JOptionPane.showMessageDialog(null, toggleBtn);
【讨论】:
恐怕这依赖于事件排序。当您在内部按钮切换侦听器之前调用actionPerformed
时,您将获得 opposite result。以上是关于获取 JToggleButton 的状态的主要内容,如果未能解决你的问题,请参考以下文章
JToggleButton 和意外的 nullPointerException
综合运用开关按钮JToggleButton复选框JCheckBox单选框JRadioButton和按钮ButtonGroup,设计如下界面