[解決済み] Java Swingでset(Preferred|Maximum|Minimum)Sizeメソッドの使用は避けた方が良いのでしょうか?
質問
以下のような方法を提案したことで、何度か批判を受けたことがあります。
- setPreferredSize
- setMinimumSize
- セット最大サイズ
オン
Swing
コンポーネントを使用します。表示されたコンポーネント間の比率を定義したい場合、この使用に代わるものはないと思います。このように言われたことがあります。
レイアウトの場合、答えはいつも同じで、適切な LayoutManager
ウェブで少し検索してみましたが、このテーマに関する包括的な分析が見つかりませんでした。そこで、以下の質問をさせていただきます。
- それらのメソッドの使用は完全に避けるべきですか?
- メソッドは理由があって定義されています。では、いつ使えばいいのでしょうか?どのような状況で使うのか?どのような目的で使うのか?
- それらのメソッドを使用することで、具体的にどのような悪影響があるのでしょうか?(画面解像度の異なるシステム間で移植性を高めることしか思いつきません)。
- どのようなLayoutManagerでも、希望するレイアウトのニーズをすべて満たせるとは思えません。私は本当に私のレイアウトのすべての小さなバリエーションのために新しいLayoutManagerを実装する必要があるのでしょうか?
- 4の回答が「yes」の場合、LayoutManagerのクラスが乱立し、メンテナンスが困難になるのでは?
- Component の子プロポーションを定義する必要がある場合 (例: child1 は 10%、child2 は 40%、child3 は 50%) 、カスタム LayoutManager を実装せずにそれを達成することは可能ですか?
どのように解決するのですか?
-
<ブロッククオート
それらのメソッドの使用を完全に避けるべきですか?
アプリケーションコードについては、はい。
-
メソッドが定義されているのには理由があります。では、いつ使えばいいのでしょうか?どのような状況で使うのか?どのような目的で使うのか?
どうでしょう、個人的にはAPIの設計事故だと思っています。複合コンポーネントが子サイズについて特別な考えを持っているため、若干の強制がありました。
-
<ブロッククオート
それらの方法を使うことで、具体的にどのような弊害があるのでしょうか?(画面解像度の異なるシステム間での移植性を加えることしか思いつきません)
技術的な理由(不完全なもので、残念ながらSwingLabsがjava.netに移行したためリンク切れになっています)については、例えば ルール (へぇ) または リンク へのコメントで、@bendicott が見つけました。 私の答え . 社会的には、コードを保守しなければならない不幸な仲間に大量の仕事を押し付け、壊れたレイアウトを追跡しなければなりません。
-
<ブロッククオート
どのようなLayoutManagerでも、希望するレイアウトのニーズをすべて満たせるとは思えません。レイアウトの小さなバリエーションごとに新しいLayoutManagerを実装する必要が本当にあるのでしょうか?
はい、「すべてのレイアウトのニーズ」に非常に近いものを満たすのに十分強力なLayoutManagerがあります。JGoodiesのFormLayout、MigLayout、DesignGridLayoutの3つがその代表的なものです。そのため、実際には、高度に専門化したシンプルな環境を除いては、LayoutManagerを書くことはほとんどないでしょう。
-
<ブロッククオート
4の答えが「yes」だとすると、LayoutManagerのクラスが乱立し、メンテナンスが大変になりませんか?
(4の答えは "no"です)。
-
Component の子プロポーションを定義する必要がある場合(たとえば、子 1 は 10%、子 2 は 40%、子 3 は 50% のスペースを使用する)、カスタム LayoutManager を実装せずにそれを達成することは可能ですか?
Big-Threeのどれでも可能ですが、GridBagはできません(本当にマスターするのに悩んだことはありません、あまりにも少ないパワーであまりにも多くの問題があります)。
関連
-
ファインバグタイプ
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
javaでよく使われる英単語
-
[解決済み] Java 8のmap()メソッドとflatMap()メソッドの違いは何ですか?
-
[解決済み] Java の assert キーワードは何をするのか、そしていつ使うべきなのか?
-
[解決済み] Javaで、オブジェクトの大きさを決定する最も良い方法は何ですか?
-
[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
-
[解決済み】Javaの配列には最大サイズがあるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
Java Exceptionが発生しました エラー解決
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
[解決済み] ボタンのサイズを設定するにはどうしたらいいですか?
-
final, finally, finalizeの違いについて話してください。
-
SpringBootApplication を型解決できない。
-
をインスタンス化することができません。
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う