gpt4 book ai didi

java - 当按下 f11 时,如何使窗口全屏显示?

转载 作者:行者123 更新时间:2023-11-29 07:35:54 30 4
gpt4 key购买 nike

import javax.swing.JFrame;

import java.awt.Color;

public class Main extends JFrame{

public static void main(String[] args) {
Main window = new Main();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(200, 200);
window.setVisible(true);
window.setTitle("Virtual World");
window.setResizable(true);
window.getContentPane().setBackground(Color.BLACK);
}

}

我该怎么做才能使 F11 使窗口进入和退出全屏模式?

我阅读了其他问题并尝试使用 window.setUndecorated(true); 但它似乎没有做任何事情...

最佳答案

要使 JFrame 真正全屏,您必须将其设置为未修饰。但是要将其设置为未装饰的,您必须先处理它。例如

class FullscreenToggleAction extends AbstractAction {

private JFrame frame;
private GraphicsDevice fullscreenDevice;

public FullscreenToggleAction (JFrame frame) {
this(frame, GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice());
}

public FullscreenToggleAction (JFrame frame, GraphicsDevice fullscreenDevice) {
this.frame = frame;
this.fullscreenDevice = fullscreenDevice;
}

@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();

if (frame.isUndecorated()) {
fullscreenDevice.setFullScreenWindow(null);
frame.setUndecorated(false);
} else {
frame.setUndecorated(true);
fullscreenDevice.setFullScreenWindow(frame);
}

frame.setVisible(true);
frame.repaint();
}
}

然后只需添加键绑定(bind)

public class Main {

public static final void addKeyBinding(JComponent c, String key, final Action action) {
c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(key), key);
c.getActionMap().put(key, action);
c.setFocusable(true);
}

public static void main(String[] args) {
final JFrame frame = new JFrame("Fullscreen Toggle Test");

Container contentPane = frame.getContentPane();
contentPane.add(new JLabel("Toogle fullscreen using F11"), BorderLayout.CENTER);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setVisible(true);

addKeyBinding(frame.getRootPane(), "F11", new FullscreenToggleAction(frame));
}
}

您还可以在不同的 GraphicsDevice 上全屏显示。例如。在多显示器环境中

GraphicsEnvironment localGraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] screenDevices = localGraphicsEnvironment.getScreenDevices();

addKeyBinding(frame.getRootPane(), "F11", new FullscreenToggleAction(frame, screenDevices[1]));

关于java - 当按下 f11 时,如何使窗口全屏显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846727/

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