radioButton.isSelected()时setEnabled(true)

Agu*_*tín 1 java swing button jradiobutton

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

我有一个radioButton(radioStock)和一个textField(stockField).我希望stockField默认为setEnabled(false),没问题,每当选中radioStock时,将stockField设置为true.我写了这段代码,但它不起作用.

if (radioStock.isSelected()) {
    stockField.setEnabled(true);
}else{
    stockField.setEnabled(false);
}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

该代码需要位于附加到JRadioButton的侦听器中,例如ActionListener或ItemListener.而且你甚至不需要if块,因为你需要的只是一个代码内部的一行代码:

  radioStock.addItemListener(new ItemListener() {

     @Override
     public void itemStateChanged(ItemEvent itemEvent) {
        stockField.setEnabled(itemEvent.getStateChange() == ItemEvent.SELECTED);
     }
  });
Run Code Online (Sandbox Code Playgroud)

有关使用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();
         }
      });
   }
}
Run Code Online (Sandbox Code Playgroud)

  • @Agustín:永远不要盲目剪切和粘贴代码.使用它包含的想法来扩充您自己的程序.阅读我提供链接的教程.想想,然后代码.然后,如果你仍然卡住,创建并发布一个只显示一个JRadioButton和一个JTextField的最小程序,并显示你的问题,[sscce](http://sscce.org).我将在上面发布一个sscce示例,向您展示我的意思. (3认同)