我正在尝试使用Swing创建一个非常简单的GUI面板。
这是我的代码:
JPanel bigBlindSelectionPanel = new JPanel();
bigBlindSelectionPanel.setLayout(new BorderLayout());
bigBlindSelectionPanel.setBorder(BorderFactory.createLineBorder(Color.black));
JList bigBlindList = new JList<String>(model);
// Code to fill the list
JLabel bigBlindAddLabel = new JLabel("Add big blind numbers to queries");
bigBlindAddLabel.setBorder(new EmptyBorder(20, 20, 20, 20));
JScrollPane bigBlindScrollPanel = new JScrollPane(bigBlindList);
//bigBlindScrollPanel.setSize(0, 80);
bigBlindScrollPanel.setBorder(new EmptyBorder(20, 20, 20, 20));
JButton bigBlindAddButton = new JButton("Add");
bigBlindAddButton.addActionListener(this);
//bigBlindAddButton.setSize(0, 20);
bigBlindAddButton.setBorder(new EmptyBorder(20, 20, 20, 20));
bigBlindSelectionPanel.add(bigBlindAddLabel, BorderLayout.NORTH);
bigBlindSelectionPanel.add(bigBlindScrollPanel, BorderLayout.CENTER);
bigBlindSelectionPanel.add(bigBlindAddButton, BorderLayout.SOUTH);
frame.pack();
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(bigBlindSelectionPanel);
frame.setVisible(true);
结果就是这样。
我有以下问题:
如何更改按钮和滚动面板的大小?设置大小操作(在上面的代码中注释)没有产生任何结果。
如何在不使用setSize()调用指定大小的情况下显示帧?如果我没有以高度和宽度调用setSize方法,则不显示任何内容。我问,因为我已经读过,如果可能,我不应该使用尺寸。
提前感谢您的帮助!
答案 0 :(得分:5)
可以使用以下命令控制JList的大小:
list.setVisibleRowCount(...);
根据模型中的数据,滚动条将根据需要显示或消失。
按钮填充框架的宽度,因为这是BorderLayout的规则。如果您不希望按钮填充宽度,则可以将其包装在JPanel中。默认情况下,JPanel使用FlowLayout来重复添加到其中的任何组件的大小:
JPanel wrapper = new JPanel();
wrapper.add(button);
frame.add(wrapper, BorderLayout.PAGE_END);
如何在不指定大小的情况下显示框架
您不需要setSize()方法。 pack()
方法将以首选大小显示组件。
此外,您无需为所有组件指定边框。创建BorderLayout时,可以在组件之间创建间隙:
bigBlindSelectionPanel.setLayout(new BorderLayout(20, 20));
然后你可以在面板上为右/左边添加一个边框。