2017-02-27 17 views
0

Java GUIでいくつか問題があります。Windows 10 java gui jframe over bound

これは私の元のコード

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

私のOSは、Windows 10

それが問題になる可能性があるの?結果であり、

誰かがこれを解決する方法を教えてください。

another pic

問題は、タイトルバーとコンテンツのサイズが異なっています。

ありがとうございました。

+0

私は問題を見るのに苦労していますか? –

+2

setVisible(true)を呼び出した後、メインスレッドのウィンドウについて何も変更しないでください。 GUIスレッドが起動したら、すべての変更がスイングスレッド上になければなりません。 – MeBigFatGuy

+1

@MeBigFatGuy:OKならば、重要な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の重要な勧告を取り入れた:たとえば、常にスイングイベントスレッド上のGUIを作成することを忘れないでください。

+0

助けてくれてありがとう。 –

+0

しかし、残念ながらそれは動作していません。 –

関連する問題