小凤kz 2024-01-05 19:41 采纳率: 25%
浏览 4

Java Swing应用 如何在GridBagLayout布局下设置JList的大小

我最近想写一个玩具式的小程序,然后发现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;
    }
}

然后面板直接放在一个简单的框架里就行了,欢迎各位来回答!(期待

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-05 22:18
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月5日

悬赏问题

  • ¥15 封装的 matplotlib animation 不显示图像
  • ¥15 python摄像头画面无法显示
  • ¥15 关于#3d#的问题:d标定算法(语言-python)
  • ¥15 cve,cnnvd漏洞扫描工具推荐
  • ¥15 图像超分real-esrgan网络自己训练模型遇到问题
  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错