有没有更简单的方法来编写这个JavaGUI窗口代码?
我正在学习的代码,只是显示一个全屏的颜色,并通过其他颜色循环。我一直在看一条线有没有更简单的方法来编写这个JavaGUI窗口代码?,java,swing,io,Java,Swing,Io,我正在学习的代码,只是显示一个全屏的颜色,并通过其他颜色循环。我一直在看一条线 getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "ESCAPE"); 这允许您按“Esc”并退出它(我认为getRootPane()与JButton关联?)。但是有没有更有效的方法来编写代码呢?可以分成多行吗?您的意思是这样的:
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "ESCAPE");
这允许您按“Esc”并退出它(我认为getRootPane()与JButton关联?)。但是有没有更有效的方法来编写代码呢?可以分成多行吗?您的意思是这样的:
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
inputMap.put(escapeStroke, "Escape");
虽然这看起来更具可读性,但我认为这不会给当前的实现增加任何效率。它可以分成许多行,但这并不能提高效率。你只是想让它更容易阅读吗?@MichaelMrozek-是的,就是这样!这实际上会降低效率,因为它必须创建这些类的实例并保留它们,直到垃圾收集通过。@RileyE-创建
InputMap
和KeyStroke
的实例,无论您是否将它们分配给任何对象。如果没有创建实例,JVM将如何将它们作为参数(或接收器)传递给方法调用?对这些对象的引用也存储在根窗格中,因此在调用结束时无法对它们进行GC。效率可能更低的唯一一件事是编译器可能会在堆栈上分配两个额外的插槽来保存本地引用,当方法返回时,这些引用会在固定时间内弹出。对不起。我起晚了。我指的是指针。它仍然需要在垃圾收集中迭代它们。这不是一个真正的性能打击,但它仍然是一些东西。