2012-01-14 150 views

回答

11

用具有適當參數的EmptyBorder設置JPanel的邊框。

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

如果JPanel中已經有一個邊界,那麼你可以使用一個組合邊框或其他的JPanel包裹的JPanel,說使用的BorderLayout,並在BorderLayout.CENTER位置,並給包裝器JPanel一個空的邊框。

+1

對於被其他面板裏面去「內」板,另一種方式來介紹空間是通過提供參數給父面板佈局的構造。佈局通常有一個構造函數,允許指定組件之間的水平和垂直間距。 – 2012-01-14 15:24:04

+0

@Andrew:真的。感謝您的澄清! – 2012-01-14 15:27:05

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

}`