为什么 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,不同的 JProgressBar
(not 添加到你的 JPanel
),并且因此在其上设置值不会修改 是 在您的 JPanel
.
上可见的值
这与以下原因相同:
String name = "Billy";
String otherName = name;
name = "Jimmy";
System.out.println(otherName);
将打印 Billy
.
简单明了: 假设我们在 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,不同的 JProgressBar
(not 添加到你的 JPanel
),并且因此在其上设置值不会修改 是 在您的 JPanel
.
这与以下原因相同:
String name = "Billy";
String otherName = name;
name = "Jimmy";
System.out.println(otherName);
将打印 Billy
.