JRadioButton ボーダー/パディング/インセット/マージン…何でも呼んでください
-
16-09-2019 - |
質問
私の Java アプリでは、フォームの各行にラベルとコントロールのセットを備えた非常に単純なフォームを作成しようとしています。次のような粗雑な ASCII 図を想像してください。
Result 1: (*) pass ( ) fail Result 2: ( ) pass (*) fail Error Count: [10______] Explanation: [Operator overload___]
迷惑なことに、 JRadioButton
コントロールは周囲に大量のパディングがあり、右に数ピクセル押して行間に多くのスペースを追加しているため、残りのコントロールと整列しません。最終的には次のような結果になります。
Result 1: (*) pass ( ) fail Result 2: ( ) pass (*) fail Error Count: [10______] Explanation: [Operator overload___]
ラジオ ボタンに空きスペースが多くならないようにして、他のボタンときれいに並べられるようにするにはどうすればよいでしょうか?重要なのは GTK L&F を使用することです。Windows でプログラムを実行してみたことはありません。
解決
どうやら犯人は2人いるようです。
ミニ
JPanel
2 つのラジオ ボタンを含むFlowLayout
これにより、デフォルトで各コンポーネントの周囲に 5 ピクセルのパディングが追加されます。やってる
radioButton.setBorder(null)
ボタンの周囲のもう 1 ピクセル分のスペースを削除します。ただし、フォーカスがあるときに周囲に描かれる点線も台無しになります。
他のヒント
左の方や、必要に応じて右に向けて(各ラベルとチェックボックスは、独自のセルを持っているでしょう)のGridBagLayoutを使用して、細胞を固定してください。ラベルは右詰めになり、チェックボックスは左寄せされます。
手でGridBagLayoutsをカスタマイズすることは面倒なので、私はNetBeansのGUIビルダーを使用して、そのグラフィカルな「カスタマイズ」ツールを使用して調整をお勧めします。
別の解決策は、マージン(radionbuttonsのsetMarginメソッド)を変更することができます。これは、仕事をする必要があります。唯一の欠点は、マージン/インセットが異なるLAFSごとに異なるだろうということです。