我正在开发一个生成kenken拼图的应用程序,其中用户输入数字来解决它。但是,我似乎无法让焦点系统工作;我的JFrame甚至没有得到重点开始。这是初始化主框架的方法:
public static void initMain() {
mainframe.setVisible(true);
mainframe.setSize(new Dimension(900, 900));
mainframe.requestFocus();
System.out.println(mainframe.isFocusOwner());
System.out.println(mainframe.isFocusable());
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
mainframe.setContentPane(puzzle);
in = mainframe.getInsets();
mainframe.setJMenuBar(bar);
bar.add(menu);
menu.add(item);
item.addMouseListener(new MouseListener () {
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {popup();}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
}
(后半部分在这里不那么重要,只是出于完成而显示)
第一个输出始终为false,并且不会生成键事件。从我在网上看到的,将窗口设置为可见并请求关注应该是足够的,尽管重点在于应该。我的操作系统是Windows 8,这有所不同。
答案 0 :(得分:0)
Ok nvm,通过requestFocusInWindow(之前也没有工作)让焦点工作。似乎问题是过早地要求关注并且只有一次。为什么大型机的重点不起作用要么我还没有完成,但现在我认为这并不重要。不管怎样,谢谢你的答案。