我为不和谐制作了这个节目。这个程序将你的文本放在这个“格式”中,允许不和谐将其转换成花哨的字母。我的问题是,键入文本时滞后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] + ":");
}
}
});
答案 0 :(得分:0)
您可以通过向JTextField添加Document Listener来实现此目的。你没有给我们什么&#34;分开&#34; boolean是,所以我做了这个例子,以防这个布尔值总是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();
}
});
}
}