2015-11-27 44 views
0

这里有一个快速解释,我把我的TextField置于.setEnabled区域内的false状态。因此,基本上在用户按下Cake的复选框后,他需要选择其中一个子菜单,在这之后,他需要输入蛋糕的数量。但是,在选择子项目菜单后,TextField条件应该是true(意味着它应该是可编辑的),但它不会按照被告知的那样去执行。谢谢。TextField不符合条件

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

class testingcheckbox 
{ 
public static void main(String[] args) 
{ 
    Frame qB = new Frame("Queen Bakery"); 

    JCheckBox cake; 

    cake = new JCheckBox("Cake"); 
    JCheckBox cakeOpt1 = new JCheckBox("Butter Cake"); 
    JCheckBox cakeOpt2 = new JCheckBox("Cheese Cake"); 

    TextField tfCake = new TextField(); 
    tfCake.setPreferredSize(new Dimension(50,24)); 
    tfCake.setEnabled(false); 

    ActionListener cakeListener = new ActionListener() 
    { 
     public void actionPerformed(ActionEvent event) 
     { 
      if(cake.isSelected()) 
      { 
       cakeOpt1.setEnabled(true); 
       cakeOpt2.setEnabled(true); 

       if(cakeOpt1.isSelected()) 
       { 
        tfCake.setEnabled(true); 
       } 
       else 
       { 
        tfCake.setEnabled(false); 
       } 
      } 
      else 
      { 
       cakeOpt1.setEnabled(false); 
       cakeOpt2.setEnabled(false); 
      } 
     } 
    }; 

    cake.addActionListener(cakeListener); 
    qB.add(cake); 

    cakeOpt1.setEnabled(false); 
    cakeOpt2.setEnabled(false); 
    qB.add(cakeOpt1); 
    qB.add(cakeOpt2); 

    qB.add(tfCake); 

    qB.addWindowListener(new WindowAdapter() 
    { 
     public void windowClosing(WindowEvent windowEvent) 
     { 
      System.exit(0); 
     }   
    }); 

    qB.setSize(780,470); 
    qB.setLayout(new FlowLayout(FlowLayout.LEFT)); 
    qB.setVisible(true); 
    qB.setLocationRelativeTo(null); 
    qB.setResizable(false); 
} 
} 
+1

的最佳方式,希望我们能全面,快速地了解你的问题是,如果你要创建和发布[小例子,程序](http://stackoverflow.com/help/mcve),一个小而完整的程序,只有必要的代码来演示你的问题,我们可以复制,粘贴,编译和运行而不用修改。 –

+1

ActionListener好像没事......你确定你在点击CakeOpt1或cakeOpt2时调用它。 –

+0

等一下..... – Asyraf

回答

2
cake.addActionListener(cakeListener); 

你只的ActionListener添加到一个复选框,所以没有代码执行,当你点击“optonal”复选框。

您还需要你的ActionListener添加到您的其他复选框:

cakeOpt1.addActionListener(cakeListener); 
cakeOpt2.addActionListener(cakeListener); 
+0

非常感谢您的先生。 – Asyraf