2012-09-18 56 views
3

這裏是我的代碼添加到組件(JTextArea和JList)到一個面板,並把它放在框架上。我可以通過BorderLayout劃分一半/一半嗎?將兩個組件放在一個JPanel容器上的基本示例?

如果是的話爲什麼我看起來凌亂一個人熬不下來? 另一種選擇是什麼? 問候, 伯納德

import java.awt.*; 
import javax.swing.BorderFactory; 
import javax.swing.border.Border; 
import javax.swing.JList; 
import javax.swing.JScrollPane; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 



public class SimpleBorder { 

    public static void main(String[] args) { 

     JFrame frame = new JFrame(); 
     frame.setSize(500,500); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

     Border etched = (Border) BorderFactory.createEtchedBorder(); 


     String[] items = {"A", "B", "C", "D"}; 
     JList list = new JList(items); 

     JTextArea text = new JTextArea(10, 40); 

     JScrollPane scrol = new JScrollPane(text); 
     JScrollPane scrol2 = new JScrollPane(list); 

     JPanel panel= new JPanel(); 
     panel.add(scrol2,BorderLayout.WEST); 
     panel.add(scrol, BorderLayout.EAST);  
     panel.setBorder(etched); 

     frame.add(panel); 
     frame.setVisible(true); 
    } 

} 
+1

在水平方向上更好地使用'BoxLayout';所有元素可以均勻分佈在大小上。 –

回答

5

JPanel的默認佈局管理器爲FlowLayout,因此添加組件但未實際將佈局設置爲BorderLayout的實例將產生意外的結果。

爲了讓你可以使用一個半/半佈局GridLayout

JPanel panel= new JPanel(new GridLayout(1, 2)); 
2

您必須使用不同的LayoutManagerBorderLayout不會允許您添加使用只有50%的可視空間的組成部分。我個人使用GridBagLayout,它允許您指定許多參數(自由空間分佈,組件的新行,對齊方式等)。

2

你應該設置你的JPanelBorderLayout第一的LayoutManager(僅ContentPanesframe#getContentPane()BorderLayout默認佈局):

JPanel panel= new JPanel(new BorderLayout()); 
    panel.add(scrol2,BorderLayout.WEST); 
    panel.add(scrol, BorderLayout.EAST);  
    panel.setBorder(etched); 
相關問題