java - 从文本字段保存文本,无需单击或按 java swing 中的“保存”按钮

标签 java swing

如何在java swing中不单击或按保存按钮的情况下保存在textField中输入的文本。

最佳答案

您需要使用 DocumentFilter 并将其添加到您的 JTextField 中,方法如下:((AbstractDocument) textbox.getDocument()).setDocumentFilter(filter) ; 添加它。下面是一个 MCVE 示例:

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class Example extends JFrame {

    JTextField textbox = new JTextField(" ", 20);

    public Example() {
        JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));

        DocumentFilter filter = new DocumentFilter() {
            @Override
            public void insertString(DocumentFilter.FilterBypass fb, int offset, String string,
                AttributeSet attr) throws BadLocationException {
                super.insertString(fb, offset, string, attr);
                System.out.println("Inserted!");
            }

            public void remove(DocumentFilter.FilterBypass fb, int offset, int length)
                throws BadLocationException {
                super.remove(fb, offset, length);
                System.out.println("removed!");
            }

            public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
                AttributeSet attrs) throws BadLocationException {
                super.replace(fb, offset, length, text, attrs);
                System.out.println("replaced!");
            }
        };

        ((AbstractDocument) textbox.getDocument()).setDocumentFilter(filter);
        panel.add(textbox);
        add(panel);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

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

关于java - 从文本字段保存文本,无需单击或按 java swing 中的“保存”按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51402928/

相关文章:

java - JDialog 属性改变了行为

java - 如何从 fragment Android 访问 Activity 变量

java - 如何知道点击操作或拖动操作后触发释放监听器?

java - 制作文本命令,例如为文本着色

java - 更改后我应该重画GUI吗?

Java SQL 更新查询不工作

java - 使用 Apache FTPClient 检索文件时如何保留修改日期?

java - 我需要一些指导来了解 ActionListener 和 actionPerformed(ActionEvent) 的工作原理

java - JMenuitem - 单击 - 操作 - Java

java - 将百分比放入MySQL数据库