Java组件最大大小

时间:2012-04-03 21:48:32

标签: java components size

我在java中遇到了一个相当恼人的问题。我有一个程序在java中运行一堆模拟,生成了大量数据,它们都显示在“图形”对象上。我创建了一个名为“Graphs”的组件,它使用GroupLayout显示这些“图形”对象的长列表,并将其放在Jscrollpane中。

我遇到的问题是“图形”的结束一半被切断了。组件可以达到的最大大小为32,767,这恰好与2 ^ 15 - 1(有符号16位数的最大大小)相同。看起来组件大小存储为16位有符号数,而不是我想到的32位整数。

我的问题是。

有没有办法改变java存储组件大小的方式,从而创建大于这个大小的组件?

如果不是解决这个问题的最佳方法是什么?我想在一个面板上显示所有这些信息。即使我将“图形”组件“叠加”在一起,父组件仍然会超出最大大小。

提前致谢。

克里斯。

2 个答案:

答案 0 :(得分:2)

请参阅相关问题Why doesn't Java support unsigned ints?

您可以通过JListJTable显示图表来解决此限制。 JList / JTable只会呈现当前可见的单元格。理想情况下,您应该分别在ListModelTableModel中存储图表的值,并实施相应的自定义ListCellRendererTableCellRenderer

如果您只想先了解概念验证,可以将图表 Component直接推送到DefaultListModelDefaultTableModel,并使用一个渲染器,其get*CellRendererComponent(...)方法返回 Graph

答案 1 :(得分:1)

我知道这种方法可能有点难以实现,但它会比你的方法更好。尝试在图表旁边添加滚动条,而不是滚动窗格。通过向滚动条添加侦听器,根据滚动条的位置动态更新Graph的内容。