首页 > 解决方案 > 为什么 JProgressBar 一旦添加到 JPanel 就不应更改?

问题描述

直截了当: 假设我们在一个扩展 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

为什么?

不,我在任何地方都找不到它。我广泛地搜索了这个特定的问题。

标签: javaswingjpanelcomponentsjprogressbar

解决方案


Java 变量的行为(实际上)类似于指针。

您创建 aJProgressBar并将其添加到您的JPanel- 并将指向 this的指针存储在变量 中bar。当你打电话给你时,bar = new JProgressBar(0, 0, 10);你改变你的指针指向的东西,但不要改变原来JProgressBar的(添加到你的那个JPanel),你现在有一个的,不同JProgressBar的(没有添加到你的JPanel),所以设置值 on不会修改您的JPanel.

这与以下原因相同:

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

将打印Billy


推荐阅读