2013-07-04 52 views
2

我有两个JLists,它们应该在JPanelGridBagLayout之间填充等量的空间。目前,它看起来像这样:在GridBagLayout中填充JLists

enter image description here

由于图像显示了JList大部分内容都得到更多的空间。试图给他们平等的空间:

bgConstraints.weightx = 0.5; 

但似乎没有工作,因为我希望。任何想法如何使两个JLists具有相同的width独立的内容和JFrame的大小(而不是更宽,然后必要)?

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.DefaultListModel; 
import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

public class GridBagTest { 

    public static void main(String[] arg){ 
     JPanel panel = new JPanel(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 
     c.fill = GridBagConstraints.BOTH; 
     c.weightx = 0.5; 
     c.weighty = 1; 
     panel.add(getList(2),c); 
     panel.add(getList(10),c); 

     // Show content 
     JFrame frame = new JFrame(); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    /** 
    * Creates a JList 
    * @param strLength The length of the String in the List 
    * @return A JList with a String and JScrollPane 
    */ 
    private static JScrollPane getList(int strLength){ 
     DefaultListModel<String> listModel = new DefaultListModel<String>(); 
     JList<String> list = new JList<String>(listModel); 

     String str = ""; 
     for(int i=0; i<strLength; i++) 
      str += i; 

     listModel.addElement(str); 
     JScrollPane pane = new JScrollPane(list); 
     return pane; 
    } 
} 

回答