我正在尝试在我的Java APP中实现FULL SCREEN模式,该模式基于this code
private static void createAndShowGUI()
{
//Create and set up the window.
JFrame frame = new JFrame("Mouse Click Demo");
//Make it non-Resizable
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new MouseEventDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
//frame.setVisible(true);
if (!frame.isDisplayable())
{
// Can only do this when the frame is not visible
frame.setUndecorated(true);
}
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
try
{
if(gd.isFullScreenSupported())
{
gd.setFullScreenWindow(frame);
System.out.print("DOES SUPPORT");
}
else
{
//Can't run in full screen mode
System.out.print("DOES NOT SUPPORT");
}
frame.setVisible(true);
}
finally
{
gd.setFullScreenWindow(null);
}
}
当我在Macbook上运行它仍显示顶级Mac栏和底部甲板时,控制台确实进入状态并打印支持,但仍然不会以全屏模式显示。
我做错了什么?
答案 0 :(得分:3)
回应你的 Escape 评论......
您最好选择使用Key Bindings
很多原因,但主要原因是它不会受到KeyListener
所做的专属焦点问题的影响
public class TickleMe {
public static void main(String[] args) {
new TickleMe();
}
public TickleMe() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
}
final JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
JPanel content = new JPanel(new GridBagLayout());
content.add(new JLabel("Tickle Me"));
InputMap im = content.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = content.getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "getMeOutOfHere");
am.put("getMeOutOfHere", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
try {
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
gd.setFullScreenWindow(null);
} finally {
frame.dispose();
}
}
});
frame.setContentPane(content);
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if (gd.isFullScreenSupported()) {
gd.setFullScreenWindow(frame);
frame.requestFocusInWindow();
}
}
});
}
}
答案 1 :(得分:0)
好的找到了罪魁祸首,例子是最终,这使得它再次进入普通窗口。我不得不重启我的机器,因为ESC无法退出全屏模式。