我有一个使用JXTreeTable
. 我需要能够JXTreeTable
定期(例如,每分钟一次)添加内容。我如何JXTreeTable
从另一个班级访问它?
我已经习惯了 ExtendScript/JavaScript,以至于我想说一些类似frame.JXTreeTable.contents = x
设置TreeTable
. 当然,Java 远没有这么简单。我怎样才能做到这一点?
我有一个使用JXTreeTable
. 我需要能够JXTreeTable
定期(例如,每分钟一次)添加内容。我如何JXTreeTable
从另一个班级访问它?
我已经习惯了 ExtendScript/JavaScript,以至于我想说一些类似frame.JXTreeTable.contents = x
设置TreeTable
. 当然,Java 远没有这么简单。我怎样才能做到这一点?
同样,与我对您其他问题的回答一样,您需要考虑修改表的代码应该在哪里。
问问自己为什么修改表格的代码不在对话框中?
例如,如果您的对话框不知道数据库,那么您需要将数据库连接传递给对话框,以便它可以自己执行任何与数据库相关的功能。
再一次,把你的窗户想象成房间。你可能在客厅里放着一堆文件,但你想放这些文件的桌子在餐厅里。你不要试图从客厅里把文件放在餐厅的桌子上。取而代之的是,您将文件带到餐厅并放在那里的桌子上。
同样,如果您想在对话框中的表格中显示数据,您可以将数据集传递给对话框,或者将数据库连接传递给对话框并查找数据以填充表格。
您可以选择任意数量的选项,具体取决于您想要实现的目标......
将 传递TreeModel
给负责执行更新的类。
这有点麻烦,因为它提供了对TreeModel
您可能不想提供给其他类的访问权限,这些类可以突然对模型执行您可能不希望它们执行的操作,例如更改根目录、删除节点、添加节点到您不希望添加它们的地方...
它还假设树结构的常识。例如,您可能只希望更新发生在某个子树中,这现在需要更新类隐含地知道这一点。
它还可能将您锁定TreeModel
在将来可能不想要的给定状态,特别是如果您想重新使用更新代码...
在更新类中使用观察者模式甚至生产者/消费者模式。
基本上这意味着更新类只是“做一些事情”并触发事件来通知任何可能感兴趣的人已经发生了更改。你在 Swing 中看到了这个概念。
这样做的好处是您将代码的更新部分与模型和 UI 分离,使代码更加灵活并减少对代码其他部分的假设。
然后由观察者/监听者决定如何响应这些更新和更改,使代码无限灵活。
这意味着您可以更改更新代码(只要观察者界面不更改)它不会影响那些对结果感兴趣的人......
您需要使您的 JXTreeTable 成为它所在的类中的公共变量(比如说 AwesomeDialog)。然后你可以通过 AwesomeDialog 的实例使用点符号来访问它,例如 dialog.table
大概看看: http ://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html