我有两个JLists
应该在JPanel
with中填充相同数量的空间GridBagLayout
。目前它看起来像这样:
如图所示JList
,大多数内容正在获得更多空间。试图给他们平等的空间:
bgConstraints.weightx = 0.5;
但剂量似乎没有像我希望的那样起作用。有什么想法可以使两者在内容和 JFrame 大小上JLists
具有相同的width
独立性(而不是必要的更宽)?
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;
}
}