(编辑)的
我想显示一个动态的JPanel列表,其中包含用户可以修改的文本字段。我无法决定如何设计我的GUI。我应该在JTable或JScrollPane中显示每个JPanel吗?
根据我的理解,JTable方法更高效,更快,因为我有getTableCellRenderer方法,使用缓存的JPanel来显示表格单元格的数据(编辑:我没有将JPanels存储在我的表中只是数据)。 getTableCellEditor方法调用相同的缓存JPanel来捕获用户的输入。捕获输入后,数据将更新到表中。我不确定如何允许用户在单元格渲染器再次接管之前修改此临时JPanel的多个组件(文本字段)。我得到的唯一方法是创建一个弹出对话框,以便在用户完成将数据存储回表后捕获所有信息。 (我认为这会暂停表格单元格渲染过程,但还不确定。)
另一种方法是创建JPanel并将其添加到JScrollPane。但是,这意味着我不仅要存储原始数据(整数,字符串等等),而且这会占用更多内存,因为我创建了很多JPanel对象。这显然是更容易的方法;但是,如果我的列表非常大,那么我相信我会在性能上看到一些命中。
我喜欢JTable设计;但是,我讨厌这样一个事实:当需要编辑单元格时,我需要弹出一个弹出来捕获输入。我不知道,我可能只是轻松的JScrollPane设计。
这听起来是对的,还是我错过了一些有关getTableCellEditor进程如何工作的信息?
答案 0 :(得分:1)
我喜欢JTable设计;但是,我讨厌这样一个事实:当需要编辑单元格时,我需要弹出一个来捕获输入
您是否已阅读JTable API并按照指向“如何使用表格”的Swing教程的链接获取工作示例?您不必创建弹出编辑器。细胞就地编辑了。
对于表格中的按钮,您需要一个自定义编辑器。您可以查看表按钮列以获得一种方法。
答案 1 :(得分:0)
答案 2 :(得分:0)
JTable
从使用flyweight pattern渲染和编辑单元格中获得了一些效率,如How to Use Tables中所述。您可以将相同的模式应用于滚动网格。我已经使用了这两种方法,但最近我更喜欢JSplitPane
中的org.netbeans.swing.outline.Outline
。