JLabels的最大大小被文本宽度覆盖?

时间:2014-01-02 12:09:28

标签: java swing jtable

我有一个JTable,其中一列代表磁盘上文件夹占用的大小。每行代表一个文件夹,此列有一个矩形列表;每个矩形的宽度表示一种文件占用的大小的百分比。这是一张图片:

example of wide layout

我是通过为一行中的每个文件类型创建JLabel来实现的,然后,在getTableCellRenderer()方法中,我有一个JLabels数组,每个文件类型一个。该方法将JLabel的首选大小和最大大小设置为列高度和每个标签的列宽百分比。

当图片变窄时我的问题出现了;以下是通过缩小上述程序的框架来实现的:

example of narrow layout

如您所见,百分比表示消失了,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++;

1 个答案:

答案 0 :(得分:1)

  

而不是使用FlowLayout

您应该可以使用Relative Layout。它专为相对尺寸设计,应随着可用空间的变化自动调整。