Ajavax.swing.border.TitledBorder
は、境界線のエッジの周りに2ピクセルの間隔を導入します。これは、周囲のコンポーネントとの位置合わせを壊すため、非常に面倒です。
この間隔をどのように削除しますか?
どんなルックアンドフィールでも機能するソリューションを探しています。
Ajavax.swing.border.TitledBorder
は、境界線のエッジの周りに2ピクセルの間隔を導入します。これは、周囲のコンポーネントとの位置合わせを壊すため、非常に面倒です。
この間隔をどのように削除しますか?
どんなルックアンドフィールでも機能するソリューションを探しています。
残念ながら、このエッジ幅は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)"にするか、独自の境界線を最初から実装することができます。
それはあなたの質問に対する本当の答えではなく、むしろ提案です: コンポーネント間でアライメントを維持したい場合:
LayoutManager
正しい配置を保証する a を使用します (提案:DesignGridLayout
ですが、他にも優れた LayoutManagers があります) 。JLabel
水平方向の行を導入しますJSeparator
(これは、JGoodies で有名な Karsten Lentszch の提案です)。