【问题标题】:TextField is not following the conditionsTextField 不符合条件
【发布时间】:2015-11-28 00:27:03
【问题描述】:

这里有一个简单的解释,我在 .setEnabled 区域内将我的 TextField 设置为错误状态。所以基本上用户在Cake的复选框上点击check后,他需要选择其中一个子项目菜单,然后他需要输入蛋糕的数量。但是,在选择子项目菜单后,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);
 }
}

【问题讨论】:

  • 让我们全面快速了解您的问题的最佳方法是创建并发布minimal example program,这是一个小而完整的程序,只有必要的代码来演示您的问题,我们无需修改即可复制、粘贴、编译和运行。
  • ActionListener 似乎没问题...你确定在点击 cakeOpt1 或 cakeOpt2 时调用它吗?
  • 不要使用 AWT (Frame, TextField) 组件。使用 Swing 组件(JFrame、JTextField)。
  • 已经改了,还是没有。基本上我从我的讲师那里学到了什么,他说如果组件从不同的包组合起来实际上没有问题(如果我错了,请纠正我)。
  • 这并不是为了解决问题。您不应该在 Swing 应用程序中使用 AWT 组件,这就是为什么它只是一个注释。在您的代码中保持一致。

标签: java swing checkbox awt textfield


【解决方案1】:
cake.addActionListener(cakeListener);

您只需将 ActionListener 添加到一个复选框,因此当您单击“可选”复选框时不会执行任何代码。

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

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

【讨论】:

  • 非常感谢先生。
猜你喜欢
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多