我有一个JTable
,其中一列代表磁盘上文件夹占用的大小。每行代表一个文件夹,此列有一个矩形列表;每个矩形的宽度表示一种文件占用的大小的百分比。这是一张图片:
我是通过为一行中的每个文件类型创建JLabel
来实现的,然后,在getTableCellRenderer()
方法中,我有一个JLabels
数组,每个文件类型一个。该方法将JLabel
的首选大小和最大大小设置为列高度和每个标签的列宽百分比。
当图片变窄时我的问题出现了;以下是通过缩小上述程序的框架来实现的:
如您所见,百分比表示消失了,JLabel
的宽度现在根据文本的宽度而不是首选/最大尺寸集显示。如果我进一步缩小窗口,百分比计算似乎再次优先;只是在宽窄的范围内我才看到这种行为。
还有其他办法吗?我是否必须绘制矩形并使用drawText()
而不是使用已存在的FlowLayout
和文本省略?
以下是设置JLabel
s:
sizeBlockDimensions[i].setSize(newWidth, rowHeight);
sizeBlockLabels[i].setPreferredSize(sizeBlockDimensions[i]);
sizeBlockLabels[i].setMaximumSize(sizeBlockDimensions[i]);
sizeBlockLabels[i].setBackground(color);
sizeBlockLabels[i].setText(labelText);
sizeBlockLabels[i].setVisible(true);
i++;