2012-01-14 11 views

答えて

11

適切なパラメータを使用して、EmptyBorderでJPanelの境界線を設定します。

すなわち、

// caveat: code not tested 
myPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

のJPanelはすでに国境を持っている場合は、あなたが複合ボーダーを使用するか、別のJPanelでのJPanelをラップ、BorderLayoutのを使用してBorderLayout.CENTER位置に言って、そして与えることができますいずれかラッパーJPanel空の境界。

+1

、スペースを導入する別の方法は、親パネルレイアウトのコンストラクタに引数を提供することです。レイアウトには、コンポーネント間の水平方向と垂直方向の間隔を指定できるコンストラクタが用意されていることがよくあります。 –

+0

@Andrew:そうです。解明してくれてありがとう! –

0

なぜコンポーネントのGridBagLayoutとsetBoundsを使用しないのですか?コンポーネントは必要な位置にとどまります。ここで

例:他のパネルの内側に起こっている「内部」のパネルについては `

'import javax.swing.*; 
import java.awt.*; 
public class set_Components_where_i_want { 
    public static void main(String[] args){ 
     JFrame frame = new JFrame(); 
     frame.setLayout(null); 
     //make new Components 
     JButton b1 = new JButton("One"); 
     JButton b2 = new JButton("Two"); 
     JButton b3 = new JButton("Three"); 
     //add Components first 
     frame.add(b1); 
     frame.add(b2); 
     frame.add(b3); 
     //get frame inserts 
     Insets insets = frame.getInsets(); 
     Dimension size = b1.getPreferredSize(); 
     //set position here 
     b1.setBounds(50 + insets.left, 10 + insets.top, 
       size.width, size.height); 
     size = b2.getPreferredSize(); 
     b2.setBounds(110 + insets.left, 80 + insets.top, 
       size.width, size.height); 
     size = b3.getPreferredSize(); 
     b3.setBounds(300 + insets.left, 60 + insets.top, 
       size.width + 100, size.height + 40); 
     //set size for the frame so it can contain all Components 
     frame.setSize(600 + insets.left + insets.right, 
        250 + insets.top + insets.bottom); 
     // make the frame be visible 
     frame.setVisible(true); 
} 

}`

関連する問題