2011-10-25 57 views
2

這裏是代碼: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.我怎樣才能讓組件在全屏模式下工作。

+0

請,不要讓過度使用的代碼塊。試着用_small_代碼片段來解釋你的問題和_complement_你的帖子。謝謝! –

+0

@jmendeth我已經給出了代碼,以便人們可以將粘貼複製到他們的IDE中並自行查看(假設'main()'等由IDE產生)。至於解釋,我想這個問題上面的幾句話應該夠了。 :) – check123

+0

你爲什麼用MigLayout標記你的問題? MigLayout顯然不是這裏的問題! – jfpoilpret

回答

1

有兩個問題:

  1. setVisible
    顯示幀中的位置必須是最後一步; 首先你必須設置你的框架和添加他的內容。
  2. initLoginPanel
    你的代碼中調用不正確做事情。爲什麼不將零件直接添加到框架?即

    initLoginPanel(YourJFrame); 
    

固定,簡化代碼:

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! 
+0

我早先嚐試過它,並且在你的推薦中再次糾正它,但仍然不起作用! – check123

+0

**您是否嘗試過我提供的代碼?**請參閱我的更新。 –

+0

在我第一次嘗試你的代碼時,我忽略了在'setVisible'之前調用'initLoginPanel()'。改變已經解決了這種情況。謝謝。 +1和正確。 – check123