我最近想写一个玩具式的小程序,然后发现JList在GridBagLayout的布局下无法正确的设置大小,以下是我的相关代码:
class AddingCollectionPanel extends JPanel{
static final int DEFAULT_WIDTH = 521;
static final int DEFAULT_HEIGHT = 300;
public Dimension getPreferredSize() {return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);}
private JLabel title;
private DefaultListModel<String> itemsModel;
private JList<String> items;
private JButton importButton;
private JButton addButton;
private JButton removeButton;
private JTextField newItemBox;
private JLabel collectionNameLabel;
private JTextField collectionNameBox;
private JButton addCollectionButton;
public AddingCollectionPanel(){
//设置布局管理器
setLayout(new GridBagLayout());
//放置标题
title = new JLabel("添加集合");
title.setFont(new Font("微软雅黑", Font.BOLD, 36));
add(title, new GBC(0, 0, 4, 1));
//放置列表框
itemsModel = new DefaultListModel<>();
items = new JList<>(itemsModel);
items.setPrototypeCellValue(" ");
items.setVisibleRowCount(30);
JScrollPane itemsScrollPane = new JScrollPane(items);
itemsScrollPane.setPreferredSize(new Dimension(1000, 1000));
add(itemsScrollPane, new GBC(0, 1, 1, 4));
//放置导入按钮
importButton = new JButton("导入表格/已有集合");
add(importButton, new GBC(1, 1, 3, 1));
//导入添加按钮
addButton = new JButton("+");
add(addButton, new GBC(1, 2, 1,1));
//放置删除按钮
removeButton = new JButton("-");
add(removeButton, new GBC(2, 2, 1, 1));
//放置条目添加框
newItemBox = new JTextField(10);
add(newItemBox, new GBC(3, 2, 1, 1));
//放置集合名&其标签
collectionNameLabel = new JLabel("集合名:");
collectionNameBox = new JTextField(10);
add(collectionNameLabel, new GBC(1, 3, 2, 1));
add(collectionNameBox, new GBC(3, 3, 1, 1));
//放置添加集合按钮
addCollectionButton = new JButton("添加");
add(addCollectionButton, new GBC(2, 4, 2, 1));
}
}
其中GBC代码如下:
package randomChooser;
import java.awt.GridBagConstraints;
public class GBC extends GridBagConstraints{
public GBC(int gridx, int gridy, int gridwidth, int gridheight) {
this.gridx = gridx;
this.gridy = gridy;
this.gridwidth = gridwidth;
this.gridheight = gridheight;
}
}
然后面板直接放在一个简单的框架里就行了,欢迎各位来回答!(期待