java - setEnabled(true) 当 radioButton.isSelected()

标签 java swing button jradiobutton

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

我有一个单选按钮 (radioStock) 和一个文本字段 (stockField)。我希望默认情况下stockfield设置(false),这没问题,并且每当检查Radiostock时,都会在True上设置Stockfield。我写了这段代码,但它不起作用。

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

最佳答案

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

  radioStock.addItemListener(new ItemListener() {

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

更多关于 JRadioButtons 的使用,请查看教程:button tutorial .


编辑我的 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();
         }
      });
   }
}

关于java - setEnabled(true) 当 radioButton.isSelected(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17890704/

相关文章:

java - 在一个类中收集多个查询参数

Java 字符串文字池和字符串对象

java - 面板中的背景颜色不会改变

Java 应用程序 GUI 在不同类中寻求输入

java - 如果单击或未单击按钮,则制作按钮方法

html - 输入里面有一个 href/button img

java - 如何通过 bundle 发送双值

java - 从顶部和底部分开更改ImageView宽度

Java 在同一个 JFrame 中绘制多个正方形

android - 在 GradientDrawable Android 上设置描边