为什么 JProgressBar 添加到 JPanel 后不应更改?

Why is it that JProgressBar should not be changed once added to a JPanel?

简单明了: 假设我们在 class 上扩展了 JPanel

JProgressBar bar = new JProgressBar(0,0,10);
add(bar);

bar.setValue(5); //Works - You can visually see the change
bar = new JProgressBar(0,0,10);
bar.setValue(10); //Works - You can NOT visually see the change

这是为什么?

不,我到处都找不到它。我广泛地搜索了这个具体问题。

Java 变量(实际上)像指针一样。

您创建一个 JProgressBar 并将其添加到您的 JPanel - 并在变量 bar 中存储 一个指针。当您调用 bar = new JProgressBar(0, 0, 10); 时,您更改了指针指向的内容,但 而不是 更改原始 JProgressBar (添加到您的 JPanel),你现在有一个 new,不同的 JProgressBarnot 添加到你的 JPanel),并且因此在其上设置值不会修改 在您的 JPanel.

上可见的值

这与以下原因相同:

String name = "Billy";
String otherName = name;
name = "Jimmy";
System.out.println(otherName);

将打印 Billy.