【问题标题】:How disable button when nothing in textfield当文本字段中没有任何内容时如何禁用按钮
【发布时间】:2014-02-03 08:44:23
【问题描述】:

我有一个简单的问题。我在这里做了一个小程序,但现在我卡在一个点上。

我有一个 TextField 和一个按钮,如果您单击它,您可以使用它查看金额。 但是我想在 TextField 中没有写入任何内容时禁用该按钮,因此当您在文本字段中写入内容时,该按钮必须能够再次按下。

谁能帮我解决这个问题?我一直在寻找答案,但我找不到。

谢谢。

【问题讨论】:

  • 哪种脚本语言?
  • 你使用什么语言?
  • 非常抱歉,我正在使用 Java!(netBeans)

标签: java button


【解决方案1】:

简单!您需要做的就是在为您正在使用的文本字段创建的文档中添加一个侦听器,然后在检测到更改时调用启用方法。在此方法中,您启用按钮

例如

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    enableButton();
  }
  public void removeUpdate(DocumentEvent e) {
    enableButton();
  }
  public void insertUpdate(DocumentEvent e) {
    enableButton();
}

public void enableButton() {
     if (textField.getText().equals(""))
     {
        button.setEnabled(false);
     }
     else
     {
        button.setEnabled(true);
     }
  }
});

【讨论】:

  • 对不起,我是初学者,你能解释一下吗?因为我不知道该怎么办
【解决方案2】:
 /*
     * jsch-0.1.50 - MyPane.java, Feb 3, 2014 3:05:03 PM
     * 
     * Copyright 2014 Varra Ltd, Inc. All rights reserved.
     * Varra proprietary/confidential. Use is subject to license terms.
     */
    package com.varra.threading.voltaile;

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;

    /**
     * TODO Description go here.
     * 
     * @author <a href="mailto:varra@outlook.com">Rajakrishna V.
     *         Reddy</a>
     * @version 1.0
     * 
     */
    public class MyPane extends JPanel
    {

        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 3089223598850357054L;

        /** The tf. */
        final JTextField tf = new JTextField(30);

        /** The button. */
        final JButton button = new JButton("BUTTON");

        /**
         * Instantiates a new my pane.
         */
        public MyPane()
        {
            add(tf);
            add(button);
            button.setEnabled(false);
            new Thread(target).start();
            tf.addActionListener(actionListener);
        }

        final ActionListener actionListener = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                if (e.getActionCommand().equalsIgnoreCase("Enable"))
                {
                    button.setEnabled(true);
                }
                else if (e.getActionCommand().equalsIgnoreCase("Disable"))
                {
                    button.setEnabled(false);
                }
            }
        };

        final Runnable target = new Runnable()
        {

            public void run()
            {
                while (true)
                {
                    final ActionListener[] listeners = tf.getActionListeners();
                    for (ActionListener listener : listeners)
                    {
                        if (tf.getText().trim().length() > 0)
                        {
                            final ActionEvent event = new ActionEvent(tf, 1, "Enable");
                            listener.actionPerformed(event);
                        }
                        else
                        {
                            final ActionEvent event = new ActionEvent(tf, 1, "Disable");
                            listener.actionPerformed(event);
                        }
                    }
                }
            }
        };

        /**
         * Entry point to the entire application, contains the list of args to pass
         * the user defined values.
         * 
         * @param args
         *            the arguments
         */
        public static void main(String... args)
        {
            final JFrame frame = new JFrame();
            frame.getContentPane().add(new MyPane());
            frame.setSize(800, 600);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }

【讨论】:

  • 这是为了让您了解使用 DocumentListener 时幕后发生的事情。但是上面的答案是 textField 在生产中的最佳用法。
  • 好...玩得开心编码... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多