我正在开发一个多人游戏,在菜单中,我需要添加一个字段,玩家可以在其中键入host-ip。
我正在使用Graphics2D制作菜单,我正在循环更新它:
JFrame screenFrame = screen.getFullScreenWindow();
while (menuIsRunning) {
Graphics2D g = screen.getGraphics();
renderer.drawMenu(g, screen.getWidth(), screen.getHeight(), menuObjects);
screenFrame.getLayeredPane().paintComponents(g);
g.dispose();
screen.update();
}
我想添加一个JTextField,如下所示:
Container contentPane = screenFrame.getContentPane();
contentPane.setLayout(null);
JTextField text = new JTextField("Enter text here", 28);
contentPane.add(text);
text.setBounds(10,10,20,20);
screenFrame.validate();
它出现在屏幕上,但是当我输入它时,几秒后,它就会冻结或者其他东西(没有错误信息)。我不能再打字,所有其他的关键动作也不起作用(比如逃脱:退出游戏)
我试着用focusListener看一些东西:
text.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
System.out.println("focus gained");
}
@Override
public void focusLost(FocusEvent e) {
System.out.println("focus lost");
}
});
它表示当焦点获得时,但当文本字段冻结时,它没有说明焦点丢失的任何内容。 如果我只是在文本字段中单击,我仍然可以使用其他功能,但是当我要求输入时它会冻结。
有人知道为什么吗?