0

我有一个使用JXTreeTable. 我需要能够JXTreeTable定期(例如,每分钟一次)添加内容。我如何JXTreeTable从另一个班级访问它?

我已经习惯了 ExtendScript/JavaScript,以至于我想说一些类似frame.JXTreeTable.contents = x设置TreeTable. 当然,Java 远没有这么简单。我怎样才能做到这一点?

4

3 回答 3

1

同样,与我对您其他问题的回答一样,您需要考虑修改表的代码应该在哪里。

问问自己为什么修改表格的代码不在对话框中?

例如,如果您的对话框不知道数据库,那么您需要将数据库连接传递给对话框,以便它可以自己执行任何与数据库相关的功能。

再一次,把你的窗户想象成房间。你可能在客厅里放着一堆文件,但你想放这些文件的桌子在餐厅里。你不要试图从客厅里把文件放在餐厅的桌子上。取而代之的是,您将文件带到餐厅并放在那里的桌子上。

同样,如果您想在对话框中的表格中显示数据,您可以将数据集传递给对话框,或者将数据库连接传递给对话框并查找数据以填充表格。

于 2014-03-23T23:49:38.153 回答
0

您可以选择任意数量的选项,具体取决于您想要实现的目标......

你可以...

将 传递TreeModel给负责执行更新的类。

这有点麻烦,因为它提供了对TreeModel您可能不想提供给其他类的访问权限,这些类可以突然对模型执行您可能不希望它们执行的操作,例如更改根目录、删除节点、添加节点到您不希望添加它们的地方...

它还假设树结构的常识。例如,您可能只希望更新发生在某个子树中,这现在需要更新类隐含地知道这一点。

它还可能将您锁定TreeModel在将来可能不想要的给定状态,特别是如果您想重新使用更新代码...

你可以...

在更新类中使用观察者模式甚至生产者/消费者模式。

基本上这意味着更新类只是“做一些事情”并触发事件来通知任何可能感兴趣的人已经发生了更改。你在 Swing 中看到了这个概念。

这样做的好处是您将代码的更新部分与模型和 UI 分离,使代码更加灵活并减少对代码其他部分的假设。

然后由观察者/监听者决定如何响应这些更新和更改,使代码无限灵活。

这意味着您可以更改更新代码(只要观察者界面不更改)它不会影响那些对结果感兴趣的人......

于 2014-01-13T22:07:49.390 回答
-1

您需要使您的 JXTreeTable 成为它所在的类中的公共变量(比如说 AwesomeDialog)。然后你可以通过 AwesomeDialog 的实例使用点符号来访问它,例如 dialog.table

大概看看: http ://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

于 2014-01-13T20:31:20.047 回答