【问题标题】:Java: How can I get rid of a specific JPanel by clicking an arrow key?Java:如何通过单击箭头键摆脱特定的 JPanel?
【发布时间】:2012-02-22 21:31:15
【问题描述】:

这是我创建图形文本的内部类。我希望能够按箭头键并让它消失。我确信它以某种方式涉及删除方法,但我在我头上。在这方面很新。

// STARTUP TEXT

class TextPanel extends JPanel implements KeyListener{

    // CONSTRUCTOR
    public TextPanel(){
        addKeyListener(this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(false);
    }

    // PAINT METHOD
    public void paintComponent(Graphics g2){
        super.paintComponent(g2);
        g2.setColor(Color.WHITE);
        g2.fillRect(0, 0, this.getWidth(), this.getHeight());
        g2.setColor(Color.BLACK);
        g2.setFont(new Font("TimesRoman", Font.PLAIN, 14));
        g2.drawString("Press an arrow key to start", this.getWidth()/4, this.getHeight()/2);
    }

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jpanel key-bindings keylistener


【解决方案1】:

AFAIK 您必须使用Key Bindings 来响应箭头键,然后使用setVisible(false) 的面板或remove(component) 的框架方法来移除面板(我认为是从框架中删除)。

【讨论】:

【解决方案2】:
/** Handle the key typed event  */
    public void keyTyped(KeyEvent e) {

    }

    /** Handle the key-pressed event  */
    public void keyPressed(KeyEvent e) {

    }

    /** Handle the key-released event  */
    public void keyReleased(KeyEvent e) {
    int key=e.getKeyCode();
        if(key==KeyEvent.VK_LEFT)
        {

            this.setVisible(false);

        }
        if(key==KeyEvent.VK_RIGHT)
        {

            this.setVisible(true);

        }

    }

【讨论】:

  • +1,虽然通常在 Swing 中我们不使用 KeyEvent,但它们应该与 AWT 一起使用,但由于这是您提供的有价值的信息,这就是为什么 :-) 问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 2017-08-22
  • 2012-06-25
  • 1970-01-01
  • 2020-01-27
  • 2012-12-10
相关资源
最近更新 更多