我从Java和Swing开始,所以我有一个非常简单的问题,但我找不到任何(简单)方法来解决它......
我的意思是只有一个列表滚动条占据了面板的整个高度,仅此而已。这是我已编写的代码,thanx帮助我找到实现目标的方法:
public class TestCode {
public static void main(String[] args) {
JFrame window = new JFrame("Test");
window.setSize(300, 300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panelUp = new JPanel();
JPanel panelCenter = new JPanel();
JPanel panelDown = new JPanel();
window.add(panelUp, BorderLayout.NORTH);
window.add(panelCenter, BorderLayout.WEST);
window.add(panelDown, BorderLayout.SOUTH);
panelUp.setBackground(new Color(200, 240, 200));
panelCenter.setBackground(new Color(240, 200, 200));
panelDown.setBackground(new Color(200, 200, 240));
Vector v = new Vector();
v.addElement("Element 1");
v.addElement("Element 2");
v.addElement("Element 3");
v.addElement("Element 4");
v.addElement("Element 5");
v.addElement("Element 6");
JList list = new JList(v);
JScrollPane listScroller = new JScrollPane(list);
panelCenter.add(listScroller);
window.setVisible(true);
}
}
答案 0 :(得分:8)
JPanel
的默认布局为FlowLayout
,要使控件居中并填充需要使用BorderLayout
的JPanel。试试这个:
panelCenter.setLayout(new BorderLayout());
panelCenter.add(listScroller, BorderLayout.CENTER);
答案 1 :(得分:3)
您实际上并不需要panelCenter
,只需使用listScroller
将window.add(listScroller, BorderLayout.CENTER)
直接添加到根窗格即可。如果要使用CENTER
填充组件的整个空间,请务必使用BorderLayout
。有关详细信息,请参阅the tutorial on BorderLayout。
如果您想保留panelCenter
,请务必明确指定BorderLayout
。 JPanel
的默认布局为FlowLayout
。
我会用:
JPanel panelCenter = new JPanel(new BorderLayout());