加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 按百分比设置JTable的列宽

发布时间:2020-12-14 23:47:26 所属栏目:Java 来源:网络整理
导读:我需要为JTable的几列分配固定宽度,然后为所有其他列分配相等的宽度. 假设JTable有5列.第一列的宽度应为100,第二列的宽度应为150.如果在设置两列的宽度后JTable的剩余宽度为600,我想在其他三列之间均匀分割. 问题是table.getParent().getSize().width通常是0
我需要为JTable的几列分配固定宽度,然后为所有其他列分配相等的宽度.

假设JTable有5列.第一列的宽度应为100,第二列的宽度应为150.如果在设置两列的宽度后JTable的剩余宽度为600,我想在其他三列之间均匀分割.

问题是table.getParent().getSize().width通常是0,即使它被添加到JFrame并且可见,所以我不能用它作为基础.

我该怎么做呢?

解决方法

public MyJFrame() {
    initComponents();
    resizeColumns();
    addComponentListener(new ComponentAdapter() {
        @Override
        public void componentResized(ComponentEvent e) {
            resizeColumns();
        }
    });
}
//SUMS 100%
float[] columnWidthPercentage = {20.0f,55.0f,10.0f,5.0f,5.0f};

private void resizeColumns() {
    int tW = jTable1.getWidth();
    TableColumn column;
    TableColumnModel jTableColumnModel = jTable1.getColumnModel();
    int cantCols = jTableColumnModel.getColumnCount();
    for (int i = 0; i < cantCols; i++) {
        column = jTableColumnModel.getColumn(i);
        int pWidth = Math.round(columnWidthPercentage[i] * tW);
        column.setPreferredWidth(pWidth);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读