【问题标题】:How do you take in key inputs without a text field in Java在 Java 中,如何在没有文本字段的情况下接受键输入
【发布时间】:2017-11-04 23:34:13
【问题描述】:

我想知道如何在 java Swing 中将 JLabel 更改为我按下的按钮,但我不知道我错过了什么。请帮忙。

它最终应该看起来像在屏幕顶部,它将显示正在按下的键,并在您按下它时更新 JLabel。不用担心 Imports,我在实际代码中都有它们。谢谢:)

public class RandomFrame extends JFrame{
    Dimension Size = new Dimension(800,800);
    ListenForKeys LFK = new ListenForKeys();
    JLabel JInput = new JLabel("");
    JPanel P1 = new JPanel();
    public static void main(String[] args) {
        new RandomFrame();
    }

    public RandomFrame() {
        super("RandomFrame");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(Size);
        P1.add(JInput);
        this.add(P1);
        this.setVisible(true);
    }

    private class ListenForKeys implements KeyListener {
        @Override
        public void keyPressed(KeyEvent e) {
            String Key = String.valueOf(e.getKeyChar());
            JInput.setText(Key);
        }

        @Override
        public void keyReleased(KeyEvent e) {}
        @Override
        public void keyTyped(KeyEvent e) {}
    }
}

【问题讨论】:

  • 当你尝试编译你的代码时是否遇到错误
  • 您似乎没有将密钥侦听器 (LFK) 添加到任何内容。因此,您正在创建一个 KeyListener,但它没有分配给任何东西,因此它可以响应关键事件。尝试将它添加到 JFrame (this.addKeyListener(LFK)) 或 JPanel (P1.addKeyListener(LFK))。
  • 谢谢,P1.addKeyListener(LFK) 不起作用,但是 this.addKeyListener(LFK) 就像我想要的那样起作用。谢谢你:)

标签: java swing jframe keylistener


【解决方案1】:

Austin 指出 LFK 没有附加到任何东西上,果然,我使用 this.addKeyListener(LFK) 行将它添加到 JFrame 中,果然它起作用了。谢谢你:)

【讨论】:

    猜你喜欢
    • 2012-08-24
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多