java - 为什么 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
为什么?
不,我在任何地方都找不到它。我广泛地搜索了这个特定的问题。
解决方案
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
。
推荐阅读
- javascript - 如何在 react-signature-canvas 中设置值?
- reactjs - 如何在 Next.js 中将全局数据添加到 _app.tsx 而不导致整个应用程序在服务器端呈现(即:禁用自动静态优化)?
- php - 更新 ACF 选项页面时,以编程方式更新所有帖子的 ACF 字段
- protractor - 单个浏览器上的量角器 multiCapabilities
- css - 文本环绕图像两个单独的角度组件
- javascript - 当图像重新缩放以适合画布时,织物 js 上的裁剪功能无法正常工作
- jdeveloper - 如何将项目从 jdeveloper11g 迁移到 jdeveloper 12c?
- statistics - 从回归摘要派生
- powershell - 使用 Invoke-Command 在虚拟机上运行脚本
- python - 预期的 np.ndarray(得到 DataFrame)