0

Ajavax.swing.border.TitledBorderは、境界線のエッジの周りに2ピクセルの間隔を導入します。これは、周囲のコンポーネントとの位置合わせを壊すため、非常に面倒です。

この間隔をどのように削除しますか?

どんなルックアンドフィールでも機能するソリューションを探しています。

4

2 に答える 2

6

残念ながら、このエッジ幅はTitledBorderクラスにハードコーディングされています。したがって、この間隔を削除することはできません。

public class TitledBorder extends AbstractBorder
{
    //...

    // Space between the border and the component's edge
    static protected final int EDGE_SPACING = 2;
}

ただし、このクラスを拡張するか(メソッド "void paintBorder(Component、Graphics、int、int、int、int、int)"をオーバーライドするか、 "Insets getBorderInsets(Component、Insets)"にするか、独自の境界線を最初から実装することができます。

于 2011-10-26T18:43:03.830 に答える
2

それはあなたの質問に対する本当の答えではなく、むしろ提案です: コンポーネント間でアライメントを維持したい場合:

  • 境界線を使用しない
  • ダイアログまたはフレーム全体に 1 つのパネルのみを使用する
  • LayoutManager正しい配置を保証する a を使用します (提案:DesignGridLayoutですが、他にも優れた LayoutManagers があります) 。
  • コンポーネントを視覚的にグループ化する必要がある場合 (タイトル付きの境界線と同じ方法)、JLabel水平方向の行を導入しますJSeparator(これは、JGoodies で有名な Karsten Lentszch の提案です)。
于 2011-10-27T08:11:12.420 に答える