2013-07-29 11 views
11

JPanelにパディングを追加したいと思います。私はこの答えを見つけました:https://stackoverflow.com/a/5328475/1590323ボーダー付きのJPanelにパディングを追加する方法

境界線のないパネルでうまくいきました。しかし、すでに境界線を持っているパネルのためにはどうすればいいですか? (この場合TitledBorder

私が試み:

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); 

(要するに:TitledBorderを有していなければならないパネルにEmptyBorderを追加すると、次にTitledBorderと別のパネルを作成し、第1のパネルを追加しますそのパネルを使用してください)

しかし、私はEmptyBorderのコンストラクタの値を無視して余りにも大きなパディングがあります。

so JPanelにグラフィック境界線を使用してパディングを追加するにはどうすればよいですか?

+0

+1質問を投稿する前にやったハードワーク:以前にも述べたように、これはいつか来るでしょう –

+0

@nIcEcOwありがとう:-) –

答えて

23

CompoundBorderをご覧ください。 外側Borderオブジェクトのインセット内の内側Borderオブジェクトを入れ子にすることによって 単一の境界に2つの境界オブジェクトを構成するために使用

複合Borderクラス。たとえば、このクラスは、既存の装飾的な境界線を持つコンポーネントに 余白スペースを追加するために使用することができる。もちろん

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

、あなたもBorderFactory#createCompoundBorder(border, margin)を使用することができます。

+2

ありがとう、「CompoundBorder」は私が必要だったものでした! –

+0

あなたは大歓迎です:)(あなたの質問に+1、同じ理由がnIcE cOwによって言われました) – NiziL

+0

私のために働いていません。理由は分かりませんか? – Paul

関連する問題