我需要显示研究项目的基本图形元素。这些元素将显示为网格(例如128 X 128个正方形,每个正方形包含不同的元素)。
应用程序的显示部分是其背后逻辑的次要部分,因此我正在寻找显示这种网格的最简单方法(在使用Swing时)。到目前为止,我已经考虑过JTable,但看起来很笨拙。我本想使用一些基于网络的东西,但这不适合应用程序。
在基本的Java/Swing中,有没有库或更好的组件可以用于这种绘图?
我需要显示研究项目的基本图形元素。这些元素将显示为网格(例如128 X 128个正方形,每个正方形包含不同的元素)。
我唯一可以说的是,它被设计为每列都是相同的对象类型。
这并不意味着这是不可能的,但它需要更多的工作来处理单元渲染器和更新单个值。
我希望能够通过坐标、轻松访问网格上的元素
这取决于您的初始入口点。例如,如果你只有一个鼠标点,你可以向表询问代表给定点的行和列,例如。。。
Point p = mouseEvent.getPoint();
int row = table.rowAtPoint(p);
int col = table.columnAtPoint(p);
一旦你有了它,你可以简单地从表中获得单元格值,使用类似。。。
Object cellValue = table.getValueAt(row, col);
只重绘特定单元格
通常,这可以通过TableModel
来实现,CCD_2应该通知表,表的某些部分已经更新,应该重新绘制。
例如,在AbstractTableModel
中,有许多"事件"方法可用于生成事件,这些事件告诉表模型的某些部分已经更改。
例如,您可以使用public void fireTableCellUpdated(int行,int列)来告诉表给定的单元格已经更改,表将通过重新绘制给定的单元格来对此做出反应。这通常由模型调用。
,我想我必须将逻辑转移到呈现代码中(或使用包装器)。
表API(实际上还有Swing中的许多高级组件)使用"渲染器"来允许程序定义组件中的某些元素应该如何显示。
有关更多详细信息,请参阅"使用自定义渲染器"。。。
一般来说,JTable
是一个复杂的API,但其复杂性来自于其内置的灵活性。你用得越多,你就会发现它的用途越多…
请仔细查看"如何使用表"以了解更多详细信息。