我试图阻止我的JTable重新调整大小,使标题小于他们持有的文本的大小.我遇到的问题是,我得到的每个标头组件的最小首选宽度只有10,当每个标头组件中的值是"标头1","标头2","标头3"等时,这显然太小了上.
我花了很多时间搜索SO并尝试实现各种建议,但尚未设法遇到解决方案.请查看我正在使用的当前代码作为扩展JTable的一部分:
public class MyTable extends JTable {
private Map<Integer, Integer> minSizeMap;
public void calculateMinColumnSizes() {
int width = 0;
int row = 0;
minSizeMap = new HashMap<Integer, Integer>();
for (int column = 0; column < columnModel.getColumnCount(); column++) {
TableColumn tableColumn = columnModel.getColumn(column);
TableCellRenderer renderer = tableColumn.getCellRenderer();
Component comp = this.prepareRenderer(renderer, row, column);
width = Math.max(comp.getPreferredSize().width, width);
minSizeMap.put(tableColumn.getModelIndex(), width);
}
}
}
Run Code Online (Sandbox Code Playgroud)
原始代码来自kleopatra对如何将JTable列调整为字符串长度的答案?,但是我已经更改了部件,因为我只想获得每个列标题的最小首选宽度,并在调整大小后存储它以供以后比较.
在调用方法之前已经设置了所有模型,所以当TableColumn的minWidth和preferredWidth默认值分别为15和75时,我对组件首选宽度的得分感到有点困惑.
关于我做了什么/理解错误的任何想法?
我目前正在致力于在 Java 中实现基于霍夫曼算法的程序,并且我正处于需要将编码内容输出到文件的阶段。我对如何实现解码所需的标头和 eof 有点困惑。对于目前的标题,我拥有输入文件中出现的所有唯一值及其频率,但在一些文章中,我看到人们用 0 或 1 表示节点,然后是频率(我有点困惑) by 因为它没有说明符号是什么)。
另外,对于我所理解的 EOF,我像符号一样对其进行编码,以便读取和解码,但是我不确定我可以使用什么值来肯定不会出现?我知道它的权重需要为 1,但不确定如何确保它实际上不在文件中。
header ×2
algorithm ×1
encoding ×1
eof ×1
huffman-code ×1
java ×1
jtable ×1
swing ×1
tablecolumn ×1