Java Swing如何重置JTextArea
Java Swing How to reset JTextArea
我正在制作一个程序,用户可以在其中将字符串消息键入 JTextArea 组件,然后按回车键发送消息,然后清除 JTextArea 并将插入符号位置重置为 0。
JTextArea userChatBox = new JTextArea();
userChatBox.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==10){
//If key pressed is enter.
client.send(userChatBox.getText());
userChatBox.setCaretPosition(0);
userChatBox.setText("");
}
}
});
userChatBox.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
userChatBox.setTabSize(4);
userChatBox.setLineWrap(true);
userChatBox.setForeground(UIManager.getColor("ColorChooser.foreground"));
userChatBox.setFont(new Font("DejaVu Serif", Font.PLAIN, 12));
userChatBox.setBackground(Color.WHITE);
userChatBox.setBounds(10, 255, 400, 80);
frmChatClient.getContentPane().add(userChatBox);
但是,当用户按下回车键时,JTextArea 将其注册为 return 并输入一个新行。即使在 userChatBox.setCaretPosition(0);
之后,插入符号也会出现在第二行,随后从 JTextArea 发送的任何字符串都将包含一个空行。我也试过设置选择的开始和结束,但无济于事。
正如@luxxminer 所说,问题是事件先发生在文本附加到 jtextarea.if 之前,您可以使用事件,然后新行将不会附加。
所以你可以使用event.consume();
方法
if (e.getKeyCode()==10){
//If key pressed is enter.
client.send(userChatBox.getText());
userChatBox.setCaretPosition(0);
userChatBox.setText("");
e.consume();
}
我正在制作一个程序,用户可以在其中将字符串消息键入 JTextArea 组件,然后按回车键发送消息,然后清除 JTextArea 并将插入符号位置重置为 0。
JTextArea userChatBox = new JTextArea();
userChatBox.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==10){
//If key pressed is enter.
client.send(userChatBox.getText());
userChatBox.setCaretPosition(0);
userChatBox.setText("");
}
}
});
userChatBox.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
userChatBox.setTabSize(4);
userChatBox.setLineWrap(true);
userChatBox.setForeground(UIManager.getColor("ColorChooser.foreground"));
userChatBox.setFont(new Font("DejaVu Serif", Font.PLAIN, 12));
userChatBox.setBackground(Color.WHITE);
userChatBox.setBounds(10, 255, 400, 80);
frmChatClient.getContentPane().add(userChatBox);
但是,当用户按下回车键时,JTextArea 将其注册为 return 并输入一个新行。即使在 userChatBox.setCaretPosition(0);
之后,插入符号也会出现在第二行,随后从 JTextArea 发送的任何字符串都将包含一个空行。我也试过设置选择的开始和结束,但无济于事。
正如@luxxminer 所说,问题是事件先发生在文本附加到 jtextarea.if 之前,您可以使用事件,然后新行将不会附加。
所以你可以使用event.consume();
方法
if (e.getKeyCode()==10){
//If key pressed is enter.
client.send(userChatBox.getText());
userChatBox.setCaretPosition(0);
userChatBox.setText("");
e.consume();
}