如何在textfield中禁用按钮

时间:2014-02-03 08:44:24

标签: java button

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

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

任何人都可以帮我这个吗?我一直在寻找答案,但我找不到。

谢谢。

3 个答案:

答案 0 :(得分:1)

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

例如

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);
     }
  }
});

答案 1 :(得分:0)

已经讨论过了。 此链接可能有所帮助 Disable button whenever a text field is empty dynamically

如果您不是在寻找,请具体说明。

答案 2 :(得分:0)

 /*
     * 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);
        }
    }