【问题标题】:java variable to retain value, not updatejava变量保留值,不更新
【发布时间】:2018-06-02 12:49:55
【问题描述】:

对不起,我疯了。我正在尝试创建一个变量来保存JTree 的选择以供以后使用。我一生都无法弄清楚如何设置该变量而不更新它,然后更改我试图保留的 Jtree 中的选择:

这是我试图捕获JTree 选择的地方:

CopySelection = FormTree.getSelectionModel();

我希望 CopySelection 在我需要之前保持不变。

CopySelection 定义为:

public TreeSelectionModel CopySelection;

当我稍后尝试使用 CopySelection 时,它会随着对 JTree 中选择的更改而更新,但我不希望这样。

【问题讨论】:

  • 为什么要保存选择模型而不是对已选择项目的引用?
  • 可能是因为我很笨,但我不知道那里可能有多少路径。它可能是 1 个或 2 个或数百个。我认为将整个选择模型保留给父母和所有人会更容易。

标签: java swing jtree


【解决方案1】:

这取决于您的 getSelectionModel() 方法是如何构建的。虽然 C++ 方法通常返回对象的副本,但在 Java 中,方法返回指向对象的指针。因此,您需要创建一个要返回的新对象,而不是返回对象本身。我会给你一个我在这里开发的 Java 应用程序的例子:

public ChessBoard copyChessBoard() {
    ChessBoard newboard = new ChessBoard();
    this.copyTo(newboard);
    return newboard;
}

copyTo() 函数简单地遍历元素,在我的例子中将它们中的每一个复制到新板上(创建新元素)。这似乎很耗时(确实如此),但如果您在数据结构中构建了一个迭代器,那么它的复杂度应该不会超过 O(n)。

不用说,这个新元素完全独立于第一个元素。

祝你好运,如果你需要的话,请告诉我!

PS:您可能已经猜到,copySelectionModel()(我的 copyChessBoard() 方法)应该替换您的 getSelectionModel()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多