簡體   English   中英

獲取JTextField文本並實時顯示在JTextarea上

[英]Take JTextField text and display it on JTextarea in real time

我制作這個程序是為了不和諧。 該程序將您的文本放入“格式”中,以使不和諧將其轉換為奇特的字母。 我的問題是在鍵入文本時落后1個字符。 我只是一個初學者,我不知道該如何解決。

附言 我不喜歡使用按鈕來轉換文本!

我的代碼:

textField = new JTextField();
    textField.addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent e) {

            textArea.setText("");
            separatedText = textField.getText().toLowerCase().toCharArray();

            for(int i = 0; i < separatedText.length; i++) {
                textArea.append(separate ? ":regional_indicator_" + separatedText[i] + ":\n" : ":regional_indicator_" + separatedText[i] + ":");                        
            }

        }
    });

您可以通過將文檔偵聽器添加到JTextField中來實現。 您沒有給我們“分離的”布爾值是什么,所以我舉了個例子說明這種布爾值始終為true

小預覽:

在此處輸入圖片說明

源代碼:

package test;

import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class DocListenerTest extends JFrame {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            DocListenerTest r = new DocListenerTest();
            r.setVisible(true);
        });
    }

    public DocListenerTest() {
        super("test");
        getContentPane().setLayout(new GridLayout(5, 2));
        JTextField textField = new JTextField();
        textField.setBorder(BorderFactory.createTitledBorder("TextField"));
        getContentPane().add(textField);
        JTextArea textArea = new JTextArea();
        textArea.setBorder(BorderFactory.createTitledBorder("TextArea"));
        JScrollPane sp = new JScrollPane(textArea);
        getContentPane().add(sp);
        setSize(400, 400);
        textField.getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void removeUpdate(DocumentEvent e) {
                addTextToArea();

            }

            private void addTextToArea() {
                textArea.setText("");
                char[] separatedText = textField.getText().toLowerCase().toCharArray();
                boolean separate = true; //Don't know the value of this.
                for (int i = 0; i < separatedText.length; i++) {
                    textArea.append(separate ? ":regional_indicator_" + separatedText[i] + ":\n"
                            : ":regional_indicator_" + separatedText[i] + ":");
                }
            }

            @Override
            public void insertUpdate(DocumentEvent e) {
                addTextToArea();

            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                addTextToArea();

            }
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM