Java 当radioButton.isSelected()时,setEnabled(true)

Java 当radioButton.isSelected()时,setEnabled(true),java,swing,button,jradiobutton,Java,Swing,Button,Jradiobutton,正如我在其他帖子中所说,我是Java新手,我遇到了一些愚蠢的问题,这里是交易: 我有一个radioButton(radioStock)和一个textField(stockField)。我希望stockField在默认情况下被设置为enabled(false),这没有问题,并且每当选中radioStock时,将stockfieldenabled设置为true。我写了这段代码,但不起作用 if (radioStock.isSelected()) { stockField.setEnabled

正如我在其他帖子中所说,我是Java新手,我遇到了一些愚蠢的问题,这里是交易:

我有一个radioButton(radioStock)和一个textField(stockField)。我希望stockField在默认情况下被设置为enabled(false),这没有问题,并且每当选中radioStock时,将stockfieldenabled设置为true。我写了这段代码,但不起作用

if (radioStock.isSelected()) {
    stockField.setEnabled(true);
}else{
    stockField.setEnabled(false);
}

该代码需要位于附加到JRadioButton的侦听器中,例如ActionListener或ItemListener。您甚至不需要if块,因为您只需要侦听器中的一行代码:

  radioStock.addItemListener(new ItemListener() {

     @Override
     public void itemStateChanged(ItemEvent itemEvent) {
        stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
     }
  });
有关使用JRadioButtons的更多信息,请查看教程:


编辑我的SSCCE

import java.awt.event.*;
import javax.swing.*;

public class ItemListenereg {
   private static void createAndShowGui() {
      final JRadioButton radioStock = new JRadioButton("Stock", true);
      final JTextField stockField = new JTextField(10);
      JPanel panel = new JPanel();
      panel.add(radioStock);
      panel.add(stockField);

      radioStock.addItemListener(new ItemListener() {

         @Override
         public void itemStateChanged(ItemEvent itemEvent) {
            stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
         }
      });

      JOptionPane.showMessageDialog(null, panel);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

该代码需要位于附加到JRadioButton的侦听器中,例如ActionListener或ItemListener。您甚至不需要if块,因为您只需要侦听器中的一行代码:

  radioStock.addItemListener(new ItemListener() {

     @Override
     public void itemStateChanged(ItemEvent itemEvent) {
        stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
     }
  });
有关使用JRadioButtons的更多信息,请查看教程:


编辑我的SSCCE

import java.awt.event.*;
import javax.swing.*;

public class ItemListenereg {
   private static void createAndShowGui() {
      final JRadioButton radioStock = new JRadioButton("Stock", true);
      final JTextField stockField = new JTextField(10);
      JPanel panel = new JPanel();
      panel.add(radioStock);
      panel.add(stockField);

      radioStock.addItemListener(new ItemListener() {

         @Override
         public void itemStateChanged(ItemEvent itemEvent) {
            stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
         }
      });

      JOptionPane.showMessageDialog(null, panel);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}
这应该行得通

    radioStock.addActionListener(new ActionListener() 
    {
    @Override
    public void actionPerformed(ActionEvent e) 
    {
         if(radioStock == e.getSource()) 
         {
            stockField.setEnabled(radioStock.isSelected());
         }
       }
    });
这应该行得通

    radioStock.addActionListener(new ActionListener() 
    {
    @Override
    public void actionPerformed(ActionEvent e) 
    {
         if(radioStock == e.getSource()) 
         {
            stockField.setEnabled(radioStock.isSelected());
         }
       }
    });

我贴了,但还是不起作用!我还需要改变什么吗?@Agustín:永远不要盲目地剪切和粘贴代码。使用其中包含的想法来扩充您自己的程序。阅读我为其提供链接的教程。思考,然后编码。然后,如果您仍然被卡住,创建并发布一个最小的程序,它只显示一个JRadioButton和一个JTextField,而不显示其他内容,并显示您的问题,一个。我将在上面发布一个sscce示例,向您展示我的意思。我粘贴了它,但仍然不起作用!我还需要改变什么吗?@Agustín:永远不要盲目地剪切和粘贴代码。使用其中包含的想法来扩充您自己的程序。阅读我为其提供链接的教程。思考,然后编码。然后,如果您仍然被卡住,创建并发布一个最小的程序,它只显示一个JRadioButton和一个JTextField,而不显示其他内容,并显示您的问题,一个。我将在上面发布一个sscce示例,向您展示我的意思(radioStock…如果这是一个匿名的内部类?源代码会是什么?为什么它会工作?OP应该注意什么原则?盲目地向OP扔代码是他们遇到问题的原因。有时我们需要教如何在强迫他们捕鱼的情况下捕鱼;)为什么
如果(radioStock…
如果这是一个匿名的内部类?源代码是什么?为什么它会工作?OP应该注意什么原则?盲目地向OP扔代码是他们遇到问题的原因。有时我们需要教他们如何捕鱼,只是强迫他们捕鱼;)