【问题标题】:More effective KeyListener implementation更有效的 KeyListener 实现
【发布时间】:2013-07-19 06:29:37
【问题描述】:

我有一些用Java绘画的经验。基本上我知道如何将关键侦听器添加到框架,但我想知道是否有任何其他方法可以添加所有这些方法,而不仅仅是在 main 方法之后或之前编写它们。这种方法使我的代码可读性差。

public class test extends JPanel {
    public static JFrame frame;
    public static JPanel panel;
    public static int x;
    public static int y;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);      
        g.fillOval(x,y,20,20);
    }

    public static void main(String args[]) {
        test x=new test();

        x.setBackground(Color.white);

        frame=new JFrame();
        frame.setSize(500,500);
        frame.add(x);
        frame.setVisible(true);
    }
}

【问题讨论】:

  • 您为什么没有按照您上次发帖中的建议阅读Custom Painting 教程:stackoverflow.com/questions/17753492/…。这不是构造类的方法。您不应该使用静态变量。您尚未实现 getPreferredSize() 方法。 framepanel 不是应该在你的类中定义的变量。 text 不是正确的类名。不听劝告为什么还要问???最后不要使用 KeyListener。有更好的 API 可用于实现您的目标。

标签: java swing awt keylistener


【解决方案1】:

是的,Adapters 减少了很多代码:

frame.addKeyListener(new KeyAdapter(){
 @Override
 public void keyTyped(KeyEvent e){
// do what ever you want
}
});

在上面的示例中,您还可以覆盖 keyPressedkeyReleased 方法,但这仅对 frame 有效。 如果你有时间,看看KeyBindings

【讨论】:

  • +1 for,但默认情况下顶级容器从不与来自 KeyListener 的 KeyEvent 交互
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
相关资源
最近更新 更多