在java swing中,无需单击或按下保存按钮即可保存文本字段中的文本

在java swing中,无需单击或按下保存按钮即可保存文本字段中的文本,java,swing,Java,Swing,如何保存在textField中输入的文本而无需在java swing中单击或按下保存按钮。您需要使用DocumentFilter,并使用以下命令将其添加到JTextField((AbstractDocument)textbox.getDocument()).setDocumentFilter(filter)以添加它。以下是一个示例aMCVE: import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JPa

如何保存在textField中输入的文本而无需在java swing中单击或按下保存按钮。

您需要使用
DocumentFilter
,并使用以下命令将其添加到
JTextField
((AbstractDocument)textbox.getDocument()).setDocumentFilter(filter)以添加它。以下是一个示例aMCVE

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

您需要使用
DocumentFilter
并使用以下命令将其添加到
JTextField
((AbstractDocument)textbox.getDocument()).setDocumentFilter(filter)以添加它。以下是一个示例aMCVE

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

文本应在何时保存?在什么条件下?您可以在什么时候使用onFocusLost@andreThompsoninserted@BartonFocusLost text在我必须单击save按钮时保存使用Luke!文本应在何时保存?在什么条件下?您可以在什么时候使用onFocusLost@andreThompsoninserted@BartonFocusLost text在我必须单击save按钮时保存使用Luke!