【发布时间】:2014-08-10 08:55:39
【问题描述】:
我有这个类,我想在调用它后立即将焦点切换到 Game 类。我可能不明白焦点的目的,但是当我按下开始时,我必须点击游戏画布本身,这样我才能使用键盘。换句话说:我怎样才能让它不用点击它来使用键盘?
package com.runner.panels;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import com.runner.main.Game;
import com.runner.main.Main;
public class PlayPanel extends JPanel{
private static final long serialVersionUID = 1L;
public PlayPanel(){
//setting the layout of the playpanel to null
setLayout(null);
//setting up the info panel : high score, meters ran, pause button etc...
JPanel info = new JPanel();
info.setBounds(0,0,1200,50);
add(info);
//back button
JButton back = new JButton("Back");
info.add(back);
Game game = new Game();
game.setBounds(0,50,1200,521);
game.setBackground(Color.black);
add(game);
back.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
CardLayout cl = (CardLayout) Main.mainp.getLayout();
cl.show(Main.mainp, "Menu");
}
});
}
}
【问题讨论】:
-
所以游戏从画布扩展?
-
1) Swing GUI 可能必须在不同的平台上工作,使用不同的 PLAF,在不同的屏幕尺寸和分辨率上使用不同的字体大小默认设置。因此,它们不利于组件的精确放置。而是使用布局管理器,或 combinations of layout managers 以及 layout padding and borders 用于空白。 2) 对于 Swing,我们通常使用key bindings 覆盖较低级别的
KeyListener。