【问题标题】:Display Jlabel based on JtextArea dynamically without button click动态显示基于JtextArea的Jlabel,无需点击按钮
【发布时间】:2019-02-15 15:10:35
【问题描述】:

我一直想知道是否可以根据 jtextarea 中的输入更新 JFrame 或 JDialogs 而无需单击按钮。例如,在我在 textarea 中输入一些文本后。它应该自动更新 jlabel 而无需按钮。我有搜索结果,但我找到的所有信息仅基于按钮单击。例如,

JFrame frame = new JFrame();
    frame.setLayout(new GridLayout(0, 1));
    JTextArea input = new JTextArea();
    JLabel output = new JLabel("test");

    // Condition 
    // If user input "abc" inside textfield
    // JLabel will automatically display "abc"

    frame.add(input);
    frame.add(output);
    frame.setSize(300,400);
    frame.setVisible(true);

我需要刷新整个框架吗?它会影响用户已经填充为空的所有其他文本字段吗?

谢谢

【问题讨论】:

    标签: java swing jlabel jtextfield


    【解决方案1】:

    JTextArea 包含的Document 对象接收更新。

    JTextArea input = new JTextArea();
    input .getDocument().addDocumentListener(new DocumentListener() {
    
        @Override
        public void removeUpdate(DocumentEvent e) {}
    
        @Override
        public void insertUpdate(DocumentEvent e) {}
    
        @Override
        public void changedUpdate(DocumentEvent arg0) {
                //Add logic here to check if particular word is entered.
                //if yes show label, else hide the label object 
        }
    });
    

    【讨论】:

    • 顺便说一句,我们是否可以检查用户是否在 textarea 中输入了新字母。它将返回 true 。例如,如果用户键入每个单词,它将返回 true ,否则它将在我创建计数器时返回 false。
    • 我知道了,只需要包含在给定的 insertUpdate 和 removeUpdate 中。谢谢。
    猜你喜欢
    • 2019-09-03
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2022-01-26
    • 2016-06-09
    相关资源
    最近更新 更多