1

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

我有一个 radioButton (radioStock) 和一个 textField (stockField)。我希望默认情况下stockfield设置为(false),对此没有任何问题,并且每当检查Radiostock时,都会在True上设置启用Stockfield。我写了这段代码,但它不起作用。

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

2 回答 2

5

该代码需要位于附加到 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();
         }
      });
   }
}
于 2013-07-26T20:45:27.897 回答
0

这应该工作

    radioStock.addActionListener(new ActionListener() 
    {
    @Override
    public void actionPerformed(ActionEvent e) 
    {
         if(radioStock == e.getSource()) 
         {
            stockField.setEnabled(radioStock.isSelected());
         }
       }
    });
于 2013-07-26T20:57:53.640 回答