java变量保留值,不更新

时间:2017-12-20 02:23:43

标签: java swing jtree

抱歉,但我已经失去了理智。我试图创建一个变量来保存JTree的选择以供以后使用。我不能为我的生活弄清楚如何设置该变量而不更新,稍后更改我试图保留的Jtree中的选择:

这是我尝试捕获JTree选项的地方:

CopySelection = FormTree.getSelectionModel();

我希望 CopySelection 保持不变,直到我需要它。

CopySelection定义为:

public TreeSelectionModel CopySelection;

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

1 个答案:

答案 0 :(得分:0)

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

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

copyTo()函数,简单地遍历元素,在我的情况下将每个元素和其中一个复制到新的板中(创建新元素)。这似乎很耗时(而且确实如此),但是如果你在数据结构中内置了一个迭代器,它应该不会超过O(n)的复杂性。

毋庸置疑,这个新元素完全独立于第一个元素。

祝你好运,让我知道这是否是你所需要的!

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