MigLayout:尝试全屏时仅显示窗口

时间:2011-10-25 15:16:45

标签: java swing miglayout

这是代码:

ScreenHeight = Toolkit.getDefaultToolkit().getScreenSize().height,
ScreenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;

JFrame MainFrame = new JFrame();
MainFrame.setSize(ScreenWidth, ScreenHeight);
MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
MainFrame.setVisible(true);

/* When set to false, all buttons and boxes are displayed, 
   otherwise only the main window appears */ 
MainFrame.setUndecorated(true); 

Container Pane = Frame.getContentPane();
Pane.setLayout(new MigLayout());
initLoginPanel(Pane); 

布置控件的功能:

private void initLoginPanel(Container Obj) 
{
    JPanel LoginContainer = new JPanel();
    LoginContainer.setLayout(new MigLayout());

    Obj.add(LoginContainer, "pos 0.5al 0.5al");

    JLabel  uNameLabel = new JLabel("Username");
    JTextField uNameBox = new JTextField();

    JLabel uPassLabel = new JLabel("Password");
    JTextField uPassBox = new JTextField();

    JButton LoginButton = new JButton("Login", 90, 26);
    LoginContainer.add(uNameLabel, "wrap");
    LoginContainer.add(uNameBox, "span");
    LoginContainer.add(uPassLabel, "wrap");
    LoginContainer.add(uPassBox, "span");
    LoginContainer.add(LoginButton, "");
}

如果在上面的代码中使用了MainFrame.setUndecorated(false),它可以正常工作但没有全屏。这就是标题栏,关闭,最小化和最大化按钮显示。

问题: 1.如何使组件在全屏模式下工作。

1 个答案:

答案 0 :(得分:1)

有两个问题:

  1. setVisible 的位置 显示框架必须是最后一步; 首先,你必须设置你的框架并添加他的内容。
  2. 拨打initLoginPanel 的电话 你的代码做错了。为什么不直接将组件添加到框架中?即。

    initLoginPanel( YourJFrame );
    
  3. 修正后的简化代码:

    JFrame frame = new JFrame("Main window");
    
    frame.setSize( Toolkit.getDefaultToolkit().getScreenSize() );
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setUndecorated(false);
    
    initLoginPanel(frame);
    
    frame.setVisible(true); //FINALLY show the JFrame!