20

一部の s にパディングを追加したいJPanel。私はこの答えを見つけました: https://stackoverflow.com/a/5328475/1590323

ボーダーのないパネルではうまくいきました。しかし、すでに境界線があるパネルに対してはどうすればよいでしょうか? (TitledBorderこの場合はA)

私は試した:

JPanel mypanel = new MyPanel(); // Panel that I am going to add a TitledBorder to, but needs padding
mypanel.setBorder(new EmptyBorder(10,10,10,10));
JPanel mypanel_container = new JPanel();
TitledBorder border = BorderFactory.createTitledBorder(BorderFactory.createRaisedBevelBorder(), "My panel");
border.setTitleJustification(TitledBorder.LEADING);
mypanel_container.setBorder(border);
mypanel_container.add(mypanel);
this.add(mypanel_container);

(要するに: をEmptyBorder持つべきパネルにを追加し、 を使用しTitledBorderて別のパネルを作成し、TitledBorderそれに最初のパネルを追加してから、そのパネルを使用します)

しかし、その後、のコンストラクターの値を無視する大きすぎるパディングを取得しましたEmptyBorder

では、グラフィカルな境界線を持つ JPanel にパディングを追加するにはどうすればよいでしょうか?

4

1 に答える 1

37

をご覧いただけますCompoundBorder

外側の Border オブジェクトのインセット内に内側の Border オブジェクトをネストすることにより、2 つの Border オブジェクトを 1 つの境界線に構成するために使用される複合 Border クラス。たとえば、このクラスを使用して、既存の飾り枠を持つコンポーネントに余白スペースを追加できます。

Border border = comp.getBorder();
Border margin = new EmptyBorder(10,10,10,10);
comp.setBorder(new CompoundBorder(border, margin));

もちろん、も使えますBorderFactory#createCompoundBorder(border, margin)

于 2013-07-29T13:43:27.237 に答える