我已经在这里完成了一个应用程序,但是屏幕上有很多空白区域,我已经花了一段时间摆弄东西,但是下面的图片是我设法切割的最多。< / p>
我假设我没有使用某种方法或实用程序,我可能已经或可能根本没有使用过。
以下是代码:
public ListWindow() {
chooser = new JFileChooser();
this.setLayout(new GridLayout(3,1,1,1));
JPanel sortPanel = new JPanel();
JPanel displayPanel = new JPanel();
JPanel btns = new JPanel();
JLabel sortLabel = new JLabel("Sort by:");
sortGame = new JRadioButton("Game");
sortScore = new JRadioButton("Score");
sortBtn = new JButton("Sort");
ButtonGroup group = new ButtonGroup();
group.add(sortGame);
group.add(sortScore);
list = new JList(reviewList.toArray());
JScrollPane reviewPane = new JScrollPane(list);
reviewPane.setPreferredSize(new Dimension(400, 150));
windowBtn = new JButton("To Review Entry");
buttonActions();
sortPanel.add(sortLabel);
sortPanel.add(sortGame);
sortPanel.add(sortScore);
sortPanel.add(sortBtn);
displayPanel.add(reviewPane);
btns.add(windowBtn);
this.add(sortPanel);
this.add(displayPanel);
this.add(btns);
}
public static void main(String[] args) {
ListWindow window = new ListWindow();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setTitle("CriticalStrike.com - Review Database");
window.pack();
window.setVisible(true);
}
}
感谢您的帮助,伙计们!
答案 0 :(得分:3)
这是由使用GridLayout引起的,这会导致您添加到其中的组件使用相同大小的空格。在你的情况下有一列和三行,如果三个组件没有占用相同的空间,那么一些GridLayout区域将有未使用的额外空间。
我建议在这里使用BorderLayout。您可以将第一个和第三个组件添加到北部和南部位置,这将尝试使用最少的房间高度和明智的房间宽度,并且您可以将大文本区域添加到中心位置,这将尽量使用最大的房间高度和宽度。
这就像......
this.setLayout(new BorderLayout());
...
this.add(sortPanel, BorderLayout.NORTH);
this.add(displayPanel, BorderLayout.CENTER);
this.add(btns, BorderLayout.SOUTH);
答案 1 :(得分:0)
还有另一种可能性,使用GridBagLayout将所有组件向上推,将所有死区留在窗口底部。
您需要将此添加到主页。
getContentPane().setLayout(new GridBagLayout());
然后在ListWindow()
中需要这样的东西GridBagConstraints gBC = new GridBagConstraints();
//these two lines so it will still resize horizontally
gBC.fill = GridBagConstraints.HORIZONTAL;
gBC.weightx = 1.0;
然后,您将使用
添加面板this.add(panel, gBC);
现在的诀窍是推动一切 - 你可以通过在面板下方放置一个空的JLabel来实现这一点,这些面板将垂直调整大小。像这样:
JLabel jLabel1 = new JLabel();
gBC.fill = GridBagConstraints.VERTICAL;
gBC.weightx = 0.0;
gBC.weighty = 1.0;
this.add(jLabel1, gBC);
您可能还需要在GridBagConstraints中设置每个组件的垂直位置,但我怀疑它是否按顺序添加它们。