Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用getText输出文本,但在控制台上输出时缺少最后一个字符_Java_Console_Character_Jtextfield_Gettext - Fatal编程技术网

Java 使用getText输出文本,但在控制台上输出时缺少最后一个字符

Java 使用getText输出文本,但在控制台上输出时缺少最后一个字符,java,console,character,jtextfield,gettext,Java,Console,Character,Jtextfield,Gettext,我试图从JTextField获取输入,并使用getText()在控制台上输出它。除了没有打印出最后一个字符外,它似乎在工作。如果我输入“Hello”,输出将是“Hell”,如果我输入“Hello there”,输出将是“Hell there”。。。。缺少最后一个字符`公共类生成器{ private JFrame frame; private JTextField textRoomName; private String roomName; /** * Launch the applicati

我试图从JTextField获取输入,并使用getText()在控制台上输出它。除了没有打印出最后一个字符外,它似乎在工作。如果我输入“Hello”,输出将是“Hell”,如果我输入“Hello there”,输出将是“Hell there”。。。。缺少最后一个字符`公共类生成器{

private JFrame frame;
private JTextField textRoomName;
private String roomName;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Generator window = new Generator();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Generator() {
    initialize();
    
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.getContentPane().setBackground(Color.GRAY);
    frame.setForeground(Color.BLACK);
    frame.setBackground(Color.BLACK);
    frame.setBounds(100, 100, 450, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);
    
    textRoomName = new JTextField();
    textRoomName.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            roomName = textRoomName.getText();
            
        }
    });
    textRoomName.setBounds(140, 52, 212, 20);
    frame.getContentPane().add(textRoomName);
    textRoomName.setColumns(10);
    
    JButton btnGenerate = new JButton("Generate");
    btnGenerate.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println(roomName);
        }
    });
    btnGenerate.setBounds(324, 427, 89, 23);
    frame.getContentPane().add(btnGenerate);
}
}`

不要使用KeyListener。生成按键事件时,文档尚未更新文本

相反,更好的API是
DocumentListener

阅读Swing教程中有关以下内容的章节:


  • 有关更多信息和示例。

    可以。谢谢。@ZimaBlue很高兴这有帮助。请参阅:。
    textRoomName.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            roomName = textRoomName.getText();
            
        }
    });