【问题标题】:Java - Action Listener of JRadioButton nameJava - JRadioButton 名称的动作侦听器
【发布时间】:2023-03-17 12:47:01
【问题描述】:

如何将 ActionListener 添加到元素的名称中?

我有一个循环为我创建一个表。

在这个循环中,我创建了单选按钮:

ZFbutton = new JRadioButton();
ZFbutton.setName(""+key);       

..key 来自循环。

目前我尝试通过以下方式访问 JRadioButtons:

 ZFbutton.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
      try {
         if(ZFbutton.isSelected() == true){

但这只能让我访问最后创建的 JRadioButton,从逻辑角度来看这是有意义的。所以我给了每个 RadioButton 一个唯一的名字:ZFbutton.setName(""+key); 但是我怎样才能用元素的名字来创建一个 ActionListener 呢?

【问题讨论】:

  • 您可以尝试几种方法。第一个是使用e.getSource()检查哪个元素导致了动作事件,也许.getName()在源上起作用。另一种方法是将单选按钮存储在数组中并通过数组访问它们
  • 我建议改用JTable
  • @XtremeBaumer 谢谢我用它制作了一个数组来解决我的问题。你可以把它写成答案,这样我就可以接受了:)

标签: java namespaces radio-button actionlistener


【解决方案1】:

您可以将 actionListener 添加到每个按钮。您可以为它设置一个 ActionCommand,而不是设置 Button 的名称。

button.setActionCommand("Alpha");

然后你可以像这样区分哪个按钮被按下:

public void actionPerformed(ActionEvent ae) {
String ac = ae.getActionCommand();

if (ac.equals("Alpha")) {
  if (jbtnB.isEnabled()) {
    System.out.println("Alpha pressed. Beta is disabled.");
    jbtnB.setEnabled(false);
  } else {
    System.out.println("Alpha pressed. Beta is enabled.");
    jbtnB.setEnabled(true);
  }
} else if (ac.equals("Beta"))
  System.out.println("Beta pressed.");
}

您从 actionEvent 中获取 actionCommand。

【讨论】:

    【解决方案2】:

    将所有按钮添加到一个数组并通过它访问每个按钮。这是一个简单的方法,但@StimpsonCat 提到的应该也可以。

    JRadioButoon[] buttons=new JRadioButton[x];
    buttons[0]=new JRadioButton();
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 2020-05-20
      • 1970-01-01
      • 2013-04-30
      相关资源
      最近更新 更多