如何通过按箭头键来删除特定的JPanel?使用Java实现。

3

这是我创建图形文本的内部类。我希望能够按下箭头键并使其消失。我确定它涉及到一些remove方法,但我还不太熟悉它。在此方面我很新手。

// 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 - Andrew Thompson
2个回答

4
据我所知,您需要使用键绑定来响应箭头键,然后使用面板的setVisible(false)或框架的remove(component)方法来移除面板(我认为是从框架中移除)。

@Jazzertron 请阅读此文档:http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html - Harry Joy
@HarryJoy:希望我能为此启动一个新线程。但请告诉我,AFAIK缩写代表什么?不过键绑定的东西值得一加。 :-) 致意 - nIcE cOw
1
@GagandeepBali:AFAIK = 据我所知;;p - Harry Joy
@HarryJoy:据我所知,我从来没有想过它会这么简单 :-) 谢谢。 - nIcE cOw
1
@GagandeepBali 谷歌也是你的朋友:http://www.urbandictionary.com/define.php?term=afaik - kleopatra
显示剩余2条评论

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,虽然通常我们不使用KeyEvent来编写Swing程序,因为它们是用于AWT的,但由于您提供了有价值的信息,所以非常感谢 :-) 致敬 - nIcE cOw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接