gpt4 book ai didi

java - 获取JTextField文本并实时显示在JTextarea上

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:29 25 4
gpt4 key购买 nike

我制作这个程序是为了不和谐。该程序将您的文本放入这种“格式”中,允许不和谐将其转换为精美的字母。我的问题是,输入文本时滞后 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] + ":");
}

}
});

最佳答案

您可以通过添加 Document Listener 来实现此目的到你的 JTextField。您没有告诉我们“单独的” boolean 值是什么,所以我制作了示例,以防该 boolean 值始终为 true

小预览:

enter image description here

源代码:

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

}
});
}
}

关于java - 获取JTextField文本并实时显示在JTextarea上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50696840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com