gpt4 book ai didi

Mac OS X 上带有键盘输入的 Java Swing 全屏

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:40 25 4
gpt4 key购买 nike

我在让 Java JFrame 在所有操作系统(Windows、Mac、Linux)上全屏显示时遇到一些问题。看来我找到的任何解决方案都可以在一个操作系统上运行,但不能在其他操作系统上运行,或者存在其他一些严重的错误。我想使用 setFullScreenWindow(window w) 方法正确启动全屏,因为 setExtendedState(...) 在 Mac/Linux 上不起作用,因为菜单栏和任务栏仍然可见。

setFullScreenWindow(...) 方法在 Java 7 出现之前在所有环境中都运行良好,现在似乎存在一个问题,即一旦进入全屏模式,应用程序就不再响应 Mac OS X 上的按键事件。该应用程序在 Windows 上运行得很好。

有人知道我如何解决这个问题吗?

注意:此处描述的解决方法 ( FullScreen Swing Components Fail to Receive Keyboard Input on Java 7 on Mac OS X Mountain Lion ) 不适用于 Windows,因为它将导致 JFrame 闪烁且无法正确打开。

此处描述的全屏方法与下面使用的方法相同,但由于按键输入问题而不起作用:( How to make a JFrame really fullscreen? )

示例代码:

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.KeyStroke;

public class FullScreenKeyTest extends JFrame {

public void createFrame() {
initKey();
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
this.setUndecorated(true);
this.setVisible(true);
gd.setFullScreenWindow(this);
}

private void initKey() {
Action keyAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
System.out.println("Escape key pressed");
setVisible(false);
System.exit(0);
}
};
this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "keyPress");
this.getRootPane().getActionMap().put("keyPress", keyAction);
}

public static void main(String[] args) {
FullScreenKeyTest testFrame = new FullScreenKeyTest();
testFrame.createFrame();
}
}

最佳答案

这有点不稳定,因为我可以让它工作并同时破坏它。

通过您的示例代码,我添加了

getContentPane().setFocusable(true);
getContentPane().requestFocus();

createFrame 方法的末尾,我没有针对根 Pane 注册操作,而是针对内容 Pane 注册

关于Mac OS X 上带有键盘输入的 Java Swing 全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com