2
我有两个JLists
,它们应该在JPanel
和GridBagLayout
之间填充等量的空间。目前,它看起来像这样:在GridBagLayout中填充JLists
由于图像显示了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;
}
}
好像setPrototypeCellValue工作。谢谢! – Grains