Java 在输入时创建字符串

标签 java swing

我有一个 JTextField 和一个 JLabel;如果用户键入特殊字符,例如 /,我希望 JLabelsetVisible(true)

我希望用户无需按任何按钮即可完成此操作,但在输入完成时“实时”,对于插入的每个新字符,都会进行检查。我该如何做这样的事情?

最佳答案

使用 DocumentListener 的简单解决方案:

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class DemoFrame extends JFrame {

    JTextField tf;
    JLabel lbl;

    public DemoFrame() {
        tf = new JTextField(10);
        lbl = new JLabel("Test");
        tf.getDocument().addDocumentListener(new DemoDocumentListener());
        lbl.setVisible(false);

        this.setLayout(new FlowLayout(FlowLayout.LEFT));
        this.add(tf);
        this.add(lbl);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(500, 100);
        this.setVisible(true);
    }

    public void checkForSpecialString() {
        if (tf.getText().contains("/")) {
            lbl.setVisible(true);
        } else {
            lbl.setVisible(false);
        }
    }

    class DemoDocumentListener implements DocumentListener {
        @Override
        public void insertUpdate(DocumentEvent e) {
            checkForSpecialString();
        }
        @Override
        public void removeUpdate(DocumentEvent e) {
            checkForSpecialString();
        }
        @Override
        public void changedUpdate(DocumentEvent e) {
            checkForSpecialString();
        }
    }

    public static void main(String[] args) {
        new DemoFrame();
    }
}

关于Java 在输入时创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567803/

相关文章:

java - 如何在jDisktopPane中显示JinternalFrame,但该DisktopPane包含GridLayout?

java - 如何使用字符串有效地管理内存?

java - 为什么需要以毫秒为单位的超时以及为什么我必须为单独的 block 声明两个具有单独 run () 方法的类

java-udp编程-从服务器向客户端发送消息

java - 如何估计 Encog 使用 Levenberg-Marquardt 算法训练具有特定样本集的特定网络所需的 RAM 量?

java - 我的 Swing 应用程序有什么问题?

Java GridBag约束

使用 SwingNode 时 JavaFX 阶段大小不一致

java - 导致错误的android偏好设置

java - 如何在 Swing 中实现分层 "selection tree"? (或 : is there an existing implementation? )