Java 将JTextField添加到游戏菜单(图形2D)

Java 将JTextField添加到游戏菜单(图形2D),java,jtextfield,graphics2d,Java,Jtextfield,Graphics2d,我正在开发一个多人游戏,在菜单上,我需要添加一个字段,玩家可以在其中键入主机ip 我用Graphics2D制作菜单,并在循环中更新它: JFrame screenFrame = screen.getFullScreenWindow(); while (menuIsRunning) { Graphics2D g = screen.getGraphics(); renderer.drawMenu(g, screen.getWidth(), screen.getHeig

我正在开发一个多人游戏,在菜单上,我需要添加一个字段,玩家可以在其中键入主机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");
        }
    });
它说的是焦点何时获得,但当textfield冻结时,它并没有说焦点丢失。 如果我只是在文本字段中单击,我仍然可以使用其他函数,但当我开始键入时,它将冻结


有人知道为什么吗

你能发布一个更完整的代码示例吗?当然,但我不知道你到底想让我发布什么。代码现在相当大。主要问题:我正在渲染一个菜单,我想添加一个swing对象。而那个物体并没有像它应该的那样工作。等一下,我会添加更多的代码,只需要编辑一点以便更容易理解。一个组件比它的图形更容易理解。它需要连接到适当的显示组件,以便响应事件。它还绑定到事件调度线程,以便可以将更新发布到事件队列。你想要实现的可能不可能像你想要实现的那样…我正在尝试做一个简单的菜单。我做无限循环,因为我正在绘制菜单的所有组件。示例:我使用的不是JButton,而是一个图像,当我单击该图像时,操作将被执行。(为此,我存储图像位置、宽度和高度)。也许我应该试试菜单上的秋千。我想把这两种东西混在一起不会有什么大问题。