繁体   English   中英

Java Swing如何重置JTextArea

[英]Java Swing How to reset JTextArea

我正在编写一个程序,用户可以在其中将字符串消息键入JTextArea组件,然后按Enter键以发送消息,然后应清除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);

但是,当用户按下Enter键时,JTextArea将其注册为返回值并输入新行。 即使在userChatBox.setCaretPosition(0); ,插入符号出现在第二行,随后从JTextArea发送的任何字符串都将包含一个空白行。 我也尝试设置选择开始和结束都无济于事。

正如@luxxminer所说的那样,问题是事件首先发生在文本追加到jtextarea之前。如果您可以使用event,那么将不会追加新行。

所以你可以使用event.consume(); 方法

if (e.getKeyCode()==10){

    //If key pressed is enter.  
        client.send(userChatBox.getText());
        userChatBox.setCaretPosition(0);
        userChatBox.setText("");
        e.consume();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM