当前位置: 首页 > 知识库问答 >
问题:

如何检查用户是否按了特定的键,如python键盘模块中的Enter键?

刘选
2023-03-14

我正在用java制作一个gui聊天应用程序(我知道太雄心勃勃了),只需向连接的房间发送消息。我还没有做网络方面的事情,但只是简单的gui。我有一个输入消息的文本字段和一个发送消息的文本区域,其中包含一个发送按钮。我想要它,以便当我按下回车键时,发送任务就会发生。我的代码是

import javax.swing.*;
import java.awt.*;

public class Jabba {
    //Class
    public static void main(String args[]) {
    //Main Method
        //main frame
        JFrame frame = new JFrame("Chat Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);

        //The Menu that will later allow us to connect and create rooms to join a chat
        JMenuBar mb = new JMenuBar();
        JMenu m1 = new JMenu("Connect");
        JMenu m2 = new JMenu("Help");
        //This is for help
        mb.add(m1);
        mb.add(m2);
        JMenuItem m11 = new JMenuItem("Create new room");
        JMenuItem m22 = new JMenuItem("Join an Existing Room");
        m1.add(m11);
        m1.add(m22);

        //Our panel
        JPanel panel = new JPanel();
        
        JLabel label = new JLabel("Enter Text");
        //The Message field
        JTextField tf = new JTextField(15);
        //The Sending button
        JButton send = new JButton("Send");
        
        
        //The resetting button
        JButton reset = new JButton("Reset");
        //Adding the panel
        panel.add(label); 
        panel.add(tf);
        panel.add(send);
        panel.add(reset);

        //The text area where the messages will go
        JTextArea ta = new JTextArea();
        //Adding it to the Scroll Pane so that It has scrolls
        JScrollPane sp = new JScrollPane(ta);
        
        //Actionlisteners allow us to listen to the actions that take place with 
        //The Specific components like here when the button is pressed
        send.addActionListener(e ->{
            //It will first store the text of the the text field in a
            //variable called msg
            String msg = tf.getText();  
            //Then Will remove the Text from the field so that new messages can be 
            //sent
            tf.setText(null);
            //Now it will send The message to the message text area
            ta.append(msg+"\n");
            });
        reset.addActionListener(e ->{
            //This is for the reset option
                ta.setText(null);
            //It will jus set all the text of the message area to null
            //i.e. Nothing
        }
        );  
        
        //adds all the content and components to the main frame.
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.getContentPane().add(BorderLayout.NORTH, mb);
        /*notice the BorderLayout here, it is from the awt package and it 
        is letting us lay the components in a specific layout. 
        Also we have changed the component below after the center to sp
        i.e. it is the scrollpane instead of our textarea to get the Scroll Bars!!*/
        frame.getContentPane().add(BorderLayout.CENTER, sp);
        frame.setVisible(true);
        //Pretty Self-Explanatory
    }
}

请在此处输入图像描述,如果我问错了问题,请帮助我并原谅我,因为我不太明白如何使用KeyListener类…##标题##

共有1个答案

段干茂实
2023-03-14

所以,正如Mad程序员告诉我并帮助我的那样,我在该文本字段中使用了一个动作侦听器,并在文本字段var tf的动作侦听器中复制了我用于发送消息的代码。所以在伪代码中是:

tf.addActionListener(e ->{
            String msg = tf.getText();
            tf.setText(null);
            ta.append(msg+"\n");
        });
 类似资料:
  • 问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。

  • 问题内容: 我想检测用户是否按下了jQuery。 这怎么可能?需要插件吗? 编辑:看来我需要使用该方法。 我想知道是否有人知道该命令是否存在浏览器问题-就像我应该知道的浏览器兼容性问题一样? 问题答案: jQuery的全部要点是,您不必担心浏览器的差异。我很确定您可以放心在所有浏览器中都为13。因此,请记住这一点:

  • 问题内容: 我正在使用Qt Designer构建UI,并且我希望按钮使用不同的修饰符执行不同的操作。因此,我认为我可以调用具有动态字符串属性的函数,这些函数将根据修饰符执行操作。 如果有人知道更简单的方法,我将不胜感激。 问题答案: 看起来您需要做的就是检查按钮处理程序中的keyboardModifiers,并根据需要选择其他操作。可以对各种修饰符进行“或”运算以检查多键组合: PyQt5 : P

  • 问题内容: 您能帮我重构此代码: 请同时说明如何检查上/下箭头键。谢谢! 问题答案:

  • 问题内容: 我是Java的初学者,一直在研究如何检测用户是否按下了某个键(例如箭头键)。显然,有很多方法可以做到这一点,我发现此方法应该对我有用: 问题是我不知道什么是KeyEvent。 当我调用该方法并给我举个例子时,谁能告诉我在括号中加什么? PS:不要把我发送到其他站点,我可能已经看过了,他们只是让我更加困惑… 问题答案: public class KeyEvent extends Inpu