2015-10-13 61 views
0

在GridLayout的

增加一個行大小以上幀包含GridLayout的兩行。第一行是文本區域,第二行是帶有兩個複選框的面板。我想增加第一排的高度,使第一排應該是總高度的75%,第二排應該是25%。我怎樣才能做到這一點?這裏是我的代碼片段:

setLayout(new GridLayout(2, 0, 0, 0));  
    Panel text_panel = new Panel(); 
    add(text_panel); 
    text_panel.setLayout(new GridLayout(1, 0, 0, 0)); 
    JTextArea textArea = new JTextArea(); 
    textArea.setText("text to be displayed"); 
    JScrollPane scroll = new JScrollPane (textArea); 
    text_panel.add(scroll); 
    textArea.setLineWrap(true); 
    textArea.setWrapStyleWord(true); 
    textArea.setEditable(false); 
    Border border = BorderFactory.createLineBorder(Color.GRAY); 
    textArea.setBorder(border); 
    textArea.setFont(new Font("Arial",Font.PLAIN,12)); 
    textArea.setCaretPosition(0); 
    textArea.requestFocus(); 
    Panel checebox_panel = new Panel(); 
    checebox_panel.setBackground(Color.WHITE); 
    add(checebox_panel); 
    checebox_panel.setLayout(new GridLayout(1, 0, 0, 0)); 


    androidCheckBox = new JCheckBox("Open start page"); 
    androidCheckBox.setBackground(Color.WHITE); 
    androidCheckBox.addItemListener(itemListener); 
    androidCheckBox.setSelected(true); 
    checebox_panel.add(androidCheckBox); 

    eclipseCheckBox = new JCheckBox("register for updates"); 
    eclipseCheckBox.setBackground(Color.WHITE); 
    eclipseCheckBox.addItemListener(itemListener); 
    eclipseCheckBox.setSelected(true); 
    checebox_panel.add(eclipseCheckBox); 
+2

我建議你在這種情況下使用'BorderLayout',將textArea放在CENTER中,其餘的放在SOUTH中。但如果你真的想要75%/ 25%,你應該使用'GridBagLayout'。只需在線查找教程,或者使用JavaDocs內部教程。 – hoijui

+0

爲什麼75%/ 25%?那些只是隨機數字。我也同意你應該只使用BorderLayout。複選框爲固定大小,文本區域將在框架調整大小時自動調整大小。 – camickr

回答

1

隨着網格佈局,你不能有兩排是不同的大小。看看BoxLayout。類似這樣的:

JPanel content = new JPanel(); 
frame.getContentPane().add(content); 
LayoutManager layout = new BoxLayout(content, BoxLayout.Y_AXIS); 
Box boxes[] = new Box[2]; 
boxes[0] = Box.createHorizontalBox(); 
boxes[1] = Box.createHorizontalBox(); 

boxes[0].createGlue(); 
boxes[1].createGlue(); 

content.add(boxes[0]); 
content.add(boxes[1]); 

JPanel panel = new JPanel();  
JPanel panel2 = new JPanel(); 

panel.setPreferredSize(new Dimension(500,300)); 
panel2.setPreferredSize(new Dimension(500,200)); 

boxes[0].add(panel); 
boxes[1].add(panel2); 

使用setPreferredSize從來不是最佳,但它的工作原理。這只是你如何做到這一點的一個例子,我相信有更好的方法! ;)