TextField 不符合条件
TextField is not following the conditions
这里有一个简单的解释,我在 .setEnabled 区域内将我的 TextField 设置为 false 状态。所以基本上在用户按下 Cake 的复选框后,他需要选择子项目菜单中的任何一个,然后他需要输入蛋糕的数量。但是,在选择子项目菜单后,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);
}
}
cake.addActionListener(cakeListener);
您只将 ActionListener 添加到一个复选框,因此当您单击 "optonal" 复选框时不会执行任何代码。
您还需要将 ActionListener 添加到其他复选框:
cakeOpt1.addActionListener(cakeListener);
cakeOpt2.addActionListener(cakeListener);
这里有一个简单的解释,我在 .setEnabled 区域内将我的 TextField 设置为 false 状态。所以基本上在用户按下 Cake 的复选框后,他需要选择子项目菜单中的任何一个,然后他需要输入蛋糕的数量。但是,在选择子项目菜单后,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);
}
}
cake.addActionListener(cakeListener);
您只将 ActionListener 添加到一个复选框,因此当您单击 "optonal" 复选框时不会执行任何代码。
您还需要将 ActionListener 添加到其他复选框:
cakeOpt1.addActionListener(cakeListener);
cakeOpt2.addActionListener(cakeListener);