2017-02-27 48 views
0

我在Java GUI中有一些問題。Windows 10的Java GUI過度綁定

這是我原來的代碼

public class GUI extends JFrame{ 

public GUI(){ 

} 

public static void main(String[] args){ 
    GUI gui = new GUI(); 
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    gui.setSize(500, 400); 
    gui.setVisible(true); 
    gui.setLayout(new BorderLayout()); 

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
    gui.setLocation(dim.width/2 - gui.getSize().width/2, dim.height/2 - gui.getSize().height/2); 


} 

} 

,這是導致

JFrame Over Bound

我的操作系統是Windows 10

這可能是一個問題嗎?

有人能告訴我如何解決這個問題嗎?

another pic

問題是標題欄和內容的大小是不同的。

謝謝。

+0

我很努力地看到問題? –

+2

調用setVisible(true)後,您不應該修改主線程中窗口的任何內容;一旦gui線程已經開始,所有的修改必須在擺動線程上 – MeBigFatGuy

+1

@MeBigFatGuy:如果確定,我將重要的Swing事件線程信息添加到我的社區wiki答案中。 –

回答

1

總是打電話setVisible(true)最後並始終打包您的GUI。例如:

import java.awt.*; 
import javax.swing.*; 

public class GUI extends JFrame { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(() -> { 
      GUI gui = new GUI(); 
      gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      gui.setPreferredSize(new Dimension(500, 400)); 
      gui.setLayout(new BorderLayout()); 
      gui.pack(); 
      gui.setLocationRelativeTo(null); 
      gui.setVisible(true); 
     }); 
    } 
} 

,並納入MeBigFatGuy的重要建議:記得要經常創造Swing事件線程上的GUI。

+0

感謝您的幫助。 –

+0

但可悲的是它不工作。 –