嗨,我不是那么专业的编程,所以我来这里问我怎样才能做到这一点。
问题:单击全屏模式后客户端游戏正在运行我想让它调用setUndecorated(),但在框架已经可见的情况下不能。
我意识到我需要创建一个新的框架,但我不确定如何将所有内容都转移过来,我已经尝试过自己,而我得到的只是新框架的空白屏幕。
这是我的代码:
public Jframe(String args[]) {
super();
try {
sign.signlink.startpriv(InetAddress.getByName(server));
initUI();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void initUI() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBackground(Color.BLACK);
gamePanel = new JPanel();
gamePanel.setLayout(new BorderLayout());
gamePanel.add(this);
JMenu fileMenu = new JMenu("Menu");
String[] mainButtons = new String[] { "-", "Donate", "-", "Vote", "-", "Hiscores", "-", "Forums", "-", "Exit"};
for (String name : mainButtons) {
JMenuItem menuItem = new JMenuItem(name);
if (name.equalsIgnoreCase("-")) {
fileMenu.addSeparator();
} else {
menuItem.addActionListener(this);
fileMenu.add(menuItem);
}
}
JMenuBar menuBar = new JMenuBar();
JMenuBar jmenubar = new JMenuBar();
Jframe.frame.setMinimumSize(new Dimension(773, 556));
frame.add(jmenubar);
menuBar.add(fileMenu);
frame.getContentPane().add(menuBar, BorderLayout.NORTH);
frame.getContentPane().add(gamePanel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setResizable(true);
init();
} catch (Exception e) {
e.printStackTrace();
}
我希望你们中的任何一个人能够帮助我真的很感谢!
答案 0 :(得分:0)
如果这是针对游戏,那么很可能你不想要这个。你应该看看 http://download.oracle.com/javase/tutorial/extra/fullscreen/exclusivemode.html
答案 1 :(得分:0)
我可能会指出显而易见的问题,以及促进错误的方法,但是你不能让它不可见,然后让它再次可见吗?
即
myFrame.setVisible(false);
myFrame.setUndecorated(true);
myFrame.setVisible(true);
但是,有一种更好的方法,正如“ghostbust555”指出的那样。
这是答案所指的setFullScreenWindow()
:
public void goFullScreen() {
GraphicsDevice myDevice =
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
// wrap in try because we don't want to lock the app in fullscreen mode
try {
myDevice.setFullScreenWindow(myFrame);
// do your stuff
...
} finally {
myDevice.setFullScreenWindow(null);
}
}