2016-10-28 13 views
1

Iがヌルパネルをコード持って:私は、これは良い習慣ではないことを読み取るJava Swingでnullレイアウトと絶対位置が悪いのはなぜですか?

label2.setBounds(150, 220, 459, 311); 

JPanel thePanel = new JPanel(); 
    thePanel.setLayout(null); 

を、私はここにsetBounds(X、Y、幅、heigth)、FEを使用なぜか教えてくれますか? あるコンポーネントと別のコンポーネントの間に何かを追加したいときは、何度も何度も位置を設定する必要があるか、それとも何か他のものですか?

お返事ありがとうございます。ありがとうございます! ;)

+1

デザインした解像度とは異なる解像度の画面では、どのように見えるのでしょうか?または、ウィンドウのサイズが変更されたとしたらどうなりますか? – DejaVuSansMono

+0

さて、レイアウトマネージャーのために、レイアウトを管理するために 'LayoutManager'が使われています(私はかなり分かりやすいと思います)。だから、一般的には(LayoutManagerを使って)すべてのサブコンポーネントが素敵な場所に置かれるので、単純なものにするのが好きですが、 'null'レイアウトを使うとエラーが発生する可能性があります。手動で位置を設定します。 – HyperNeutrino

+0

私は忘れてしまった:this.setResizable(false); this.setSize(600、570); \t \t this.setLocationRelativeTo(null);私は自分のコードにこの行があります。 – Persantarus

答えて

4

は絶対位置で複数の問題があります。

  • 異なる画面サイズと解像度は、どのようなあなたのマシン上で素晴らしく見える、異なる解像度で別の画面に別々に出てくるでしょう。
  • 同じように、他のアプリケーションと一緒にアプリケーションを並べて実行したいので、ユーザーが画面のサイズを変更するとどうなりますか?
  • 異なるロケールとフォントサイズ別のロケールまたは別のフォントを使用するときのラベル、またはフォントサイズを変更します。

あり多くの理由は、おそらくですが、レイアウトマネージャを使用すると、ウィンドウのサイズが変更されたときにコンテンツが再配布されることを確認する場合、またはコンテナの内容が変化、...絶対位置を使用

は、おそらく最も簡単な方法ですさまざまなレイアウト管理者とその運用方法を知ることができます。それは、例えば、変化する要件のために頭痛からあなたを救うでしょう。

+0

真であり、すべてのグラフィックユーザーインターフェイスに適用されます。 – Gabriel

+0

* "絶対位置を使用するのはおそらく最初の段階では最も簡単な方法です。" * "初め"とはどういう意味ですか? UIが**第2のコンポーネント**を必要とするまでは?それは、レイアウトを使用するよりもあまり役に立たないと感じるポイントです。リストに追加する他の理由: 'null'レイアウトはスクロールペイントを完全にねじ込みます。レイアウトと 'pack()'を使うと、UIは推測や 'マジックナンバー 'のない正確なサイズになります。私は彼らの上に私の 'コピー/貼り付け'のコメントで終わります。 –

+0

.. Java GUIは、異なるロケールで異なるPLAFを使用して、異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –

関連する問題