簡體   English   中英

KeyEvent永不觸發(java Swing)

[英]KeyEvent never fires (java Swing)

目前,我正在嘗試向我的項目添加鍵盤支持,但是我遇到了麻煩的問題。 我的聽眾沒有捕獲任何事件。 我用代碼做了簡單的打印,但是什么也沒發生。 我從來沒有遇到過這樣的問題。

這是我的類GUI:

public class GUI extends JPanel {
/**
 * 
 */
private static final long serialVersionUID = 1L;
private ComponentAbstract korzen;
private GUI self;
public GUI() {

    self=this;

    this.stworz_PanelLogowania();



    this.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub
        System.out.println("typed");    
        }

        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub
        System.out.println("pressed");

        }
    });


this.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        super.mouseClicked(e);
        korzen.tryClick(e.getX(), e.getY());
        repaint();
    }
});

 this.repaint();

}

@Override
protected void paintComponent(Graphics g ) {
    super.paintComponent(g);
    korzen.repaint();
    System.out.println("omatko");
    korzen.draw((Graphics2D)g);

}

private void zmien_panel(ComponentAbstract newkorzen){
    korzen=newkorzen;
    self.repaint();
}


private void stworz_PanelLogowania(){


    LinearPanel lp=new LinearPanel(220, 50, 300, 300);
    //lp.setOrientarion(Orientation.VERTICAL);

    lp.addComponent(new Label(0, 0, 350, 40, "Witamy w castorama APP"));
    lp.setPadding(2);
    lp.addComponent(new TextBox(0, 0, 350, 40));
    korzen=lp;
    System.out.println("kuniec");
}


}

有趣的是,鼠標偵聽器可以完美工作。 編輯:之前有KeyAdapter,但結果是相同的。

KeyEvent僅分派給具有焦點的組件。 默認情況下,JPanel不能聚焦,因此它不會接收KeyEvent。

在構造函數中,您需要使用:

setFocusable(true);

然后,根據應用程序的其余部分,當您輕觸面板時,該面板現在可以接收焦點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM