【问题标题】:Why is it that JProgressBar should not be changed once added to a JPanel?为什么 JProgressBar 一旦添加到 JPanel 就不应更改?
【发布时间】:2018-11-22 03:37:53
【问题描述】:

简单明了: 想象一下我们在一个扩展 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 swing jpanel components jprogressbar


【解决方案1】:

Java 变量的作用(实际上)类似于指针。

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

这与以下原因相同:

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

将打印Billy

【讨论】:

  • 谢谢你,澄清。我知道指针,但我认为添加的组件会存储组件,所以如果它指向不同的东西,componentPane 中的那个也会发生同样的情况。
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
相关资源
最近更新 更多