have a try//GUI放在屏幕的正中央 Dimenstion screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (int)((screen.getWidth()-your_frame.getWidth())/2); int y = (int)((screen.getHeight()-your_rame.getHeight())/2); your_frame.setLocation(x, y); your_frame.setVisible(true);//初始时就最大化 your_frame.setState(Frame.MAXIMIZED_BOTH);
Dimenstion screen = Toolkit.getDefaultToolkit().getScreenSize(); int x = (int)((screen.getWidth()-your_frame.getWidth())/2); int y = (int)((screen.getHeight()-your_rame.getHeight())/2); your_frame.setLocation(x, y); your_frame.setVisible(true); //初始时就最大化 your_frame.setState(Frame.MAXIMIZED_BOTH);
Dimenstion screen = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int)((screen.getWidth()-your_frame.getWidth())/2);
int y = (int)((screen.getHeight()-your_rame.getHeight())/2);
your_frame.setLocation(x, y);
your_frame.setVisible(true);//初始时就最大化
your_frame.setState(Frame.MAXIMIZED_BOTH);
但我改进了下:
Dimenstion screen = Toolkit.getDefaultToolkit().getScreenSize();
myFrame.setSize((int)screen.getWidth(),(int)screen.getHeight);
但这样电脑的任务栏也被覆盖了.不方便用户进行操作,于是我这样设:
myFrame.setSize((int)screen.getWidth(),(int)screen.getHeight-30);
但这样感觉总是不雅,有没有更好的办法,使我的GUI界面覆盖除任务栏以外的所有区域.
class MyFrame extends JFrame
{
JTextField jtf = new JTextField();
JPasswordField jpf = new JPasswordField();
JButton sure=new JButton("确定");
sure.addActionListener(this);
sure.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER ){
sure.doClick();
}
}
});
------------- 以下省略----------------------
}
遇到一个问题,也就是只有在按钮获得焦点才能监听键盘是否输入了enter键,我试着把sure.addKeyListener(new KeyAdapter(){
改为this.addKeyListener(new KeyAdapter(){可弄得更糟,按下Enter键根本没反应.Why???????????????????????????????????????????
总之如何能在按钮不获得焦点的情况下,使按下Enter键就可以达到点击按钮的目的?????
--------------------------------
//初始时就最大化,这样改试试
int state = your_frame.getState();
state = state | Frame.MAXIMIZED_BOTH;
your_frame.setState(state);
--------------------------------遇到一个问题,也就是只有在按钮获得焦点才能监听键盘是否输入了enter键,我试着把sure.addKeyListener(new KeyAdapter(){
改为this.addKeyListener(new KeyAdapter(){ 可弄得更糟,按下Enter键根本没反应.Why???????????????????????????????????????????
总之如何能在按钮不获得焦点的情况下,使按下Enter键就可以达到点击按钮的目的?????
---------------------------------------
你的焦点不在监听对象上,是不能触发事件的,所以还是按你原来的做法,通过按tab键让焦点转到button上在按enter键,或者改为在jpf上加监听,也就是jpf.addKeyListener(new KeyAdapter(){。 this.addKeyListener是在你的frame上追加监听,但是因为你的焦点不在frame上,所以也不会触发事件了。
-----------------------------------------------------------------------------------------------------
第二个问题我还有一个疑问,就是为什么JFrame没有获得焦点,按我的观点是在frame载入时就获得了焦点,直得它销毁为止.要不然frame什么时候才获得焦点?虽然我可以为frame上的每个控件注册KeyListener,这样只要一按下enter,就相当于单击按钮了.但这样也太麻烦了.我想问的就是能不能在frame上,注册一次KeyListener就可以达到这个目的?
int x = (int)((screen.getWidth()-your_frame.getWidth())/2);
int y = (int)((screen.getHeight()-your_rame.getHeight())/2);
your_frame.setLocation(x, y);
your_frame.setVisible(true); //初始时就最大化
your_frame.setState(Frame.MAXIMIZED_BOTH);
your_frame.setExtendedState(Frame.MAXIMIZED_BOTH);setState是兼容于老版本jdk,只有两种状态,所以应该用扩展状态设置。
I hava made a decision that I will look up the javaAOI more to solve problems in my study.