【发布时间】:2017-09-04 21:37:52
【问题描述】:
我在 Eclipse 中构建了一个摆动窗口,打开时会进入全屏状态,但是无法关闭全屏。
我尝试过在线研究(我知道类似的主题),但在尝试解决方案时遇到了问题。
这是我的 JFrame
private void initialize()
{
frmCpStats = new JFrame();
frmCpStats.setTitle("CP Stats");
Toolkit tk = Toolkit.getDefaultToolkit();
int x =((int) tk.getScreenSize().getWidth());
int y =((int) tk.getScreenSize().getHeight());
frmCpStats.setExtendedState(JFrame.MAXIMIZED_BOTH);
frmCpStats.setSize(x, y);
frmCpStats.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmCpStats.setUndecorated(true);
KeyStroke k = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
int w = frmCpStats.WHEN_IN_FOCUSED_WINDOW;
dialog.getRootPane().registerKeyboardAction(e -> window.dispose(), k, w);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
StatsDisplay window = new StatsDisplay();
window.frmCpStats.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public StatsDisplay() {
initialize();
}
Eclipse 用VK_ESCAPE 和WHEN_IN_FOCUSED_WINDOW 识别错误Cannot be resolved or is not a field,用dialog 识别dialog cannot be resolved。我对 swing 的实际工作原理非常陌生,所以我完全不知道为什么会出现这些错误。
【问题讨论】:
-
请发布有效的minimal reproducible example 并附上您的问题,我们可以编译、运行和测试代码。问题:您是否导入了正确的 KeyEvent 类,特别是
java.awt.event.KeyEvent? -
另外,
JFrame不继承自JComponent,因此它没有JComponent常量,例如WHEN_IN_FOCUSED_WINDOW。但你应该在来这里之前检查 API 是否有类似的东西,不是吗? -
我使用的是
org.eclipse.swt.events.KeyEvent,使用awt 似乎已经清除了VK_ESCAPE位的任何问题。我对 Java 不是很了解,我不得不有点盲目地工作。 -
API 是你的朋友——你会想用它到筋疲力尽的。
-
不要盲目复制代码。这不是你学习编码的方式,也不是你在这个网站上提问的方式。
标签: java eclipse swing fullscreen