2012-03-14 10 views
2

私は、計算ソフトウェアのユーザーインターフェイスをswing(Java)を使用して設計しました。ソフトウェアをラップトップに移動すると、パネルが画面外に広がり、ネストされたパネルで同様の問題が発生することに気付きました。これにより、ソフトウェアの使用が非常に困難になります。どうすれば問題を解決できますか?パネルサイズがコンピュータからコンピュータに変わる

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

を追加しました:コードのいくつかの部分は、次のとおりです(すでにされていない場合)あなたが考慮する必要がありますどのような

public GUI() { 

      int width=1200; 
      int height=950; 
    setTitle("FEM Analysis"); 
    setSize(width, height); 
    setLayout(new BorderLayout()); 
    setLocation(20, 20); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      .....} 
+3

郵便いくつかのコードください。 – Stefan

+3

パネルを収納するコンテナにどのようなレイアウトを使用していますか?いくつかのサンプルコードが役に立ちます。それを試しているさまざまなコンピュータが同じ解像度を持っているのでしょうか、それとも違うのですか? – JTeagle

+7

解決策は、JPanelまたはウィンドウサイズを設定するのではなく、適切なレイアウトマネージャを使用して、各コンポーネントとそのコンテナのpreferredSizesを設定できるようにすることです。 –

答えて

3

は、解像度の異なるコンピュータ間でのパネルのサイズを拡大するために画面サイズを使用しています。このような(0.8)のような値で幅または高さを掛けた場合、

private final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().getWidth(); 
private final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().getHeight(); 

あなたの値の80%を与える。たとえば次のような幅と高さを宣言した場合。

+4

間違っていませんが、手動でサイズを手動で設定するのは良い考えではありません:-) – kleopatra

+0

助けてくれてありがとう、mrbeen。はい、それは私が探していたものです。私は画面の寸法を使ってサイズを拡大していません。私は自分のコードを修正し、その結果をあなたに知らせます。リンクありがとう。 – Hassan

+0

メソッドgetWidth()およびgetHeight()は、intではなくdoubleを返します。 – Abdelhak

0

あなたのGUIコンポーネントにpack()を使用して検討する必要があります...これはあなたが探してと助けていたものであるhttp://www.devdaily.com/blog/post/jfc-swing/java-swing-faq-how-determine-screen-size-resolution

希望:

はここで画面の解像度を使用するための素晴らしいガイドです。それは自動的に空白が多いのきれい代わりにコンテンツに合わせてフレームを縮小:

public GUI() { 
    // ... 
    pack(); 
}