【发布时间】:2018-03-03 20:56:39
【问题描述】:
我现在对 JSlider 有点麻烦,我对 java 还很陌生,所以这可能很容易纠正。
我有一个如下所示的 JSlider: JSlider Gui Image
我想要做的是让“0”不断更新到 JSlider 的值。我添加了一个 ChangeListener,并在 JSlider 上调用了 .getValue() 并设置为等于一个 int 变量,如下图所示:JSlider Code
这个 int 变量已在类中声明,因此它不是任何方法的本地变量,System.out.println() 证明 ChangeListener 正在工作,因为 JSlider 的值不断更新并打印在控制台中,但是int 变量似乎没有在此 ChangeListener 之外保存其值,因此不会在我想要的边框中显示当前值。
有人知道如何解决这个问题吗?
所有相关代码都在这里:
JPanel sectorSlider = new JPanel();
sectorSlider.setLayout(new BorderLayout());
TitledBorder sectorSliderBorder;
final int sectorNumberMin = 0;
final int sectorNumberMax = 50;
final int sectorNumberInitial = 12;
JSlider sectorNumberSlider = new JSlider(JSlider.HORIZONTAL,
sectorNumberMin, sectorNumberMax, sectorNumberInitial);
sectorNumberSlider.setMajorTickSpacing(10);
sectorNumberSlider.setMinorTickSpacing(5);
sectorNumberSlider.setPaintTicks(true);
sectorNumberSlider.setPaintLabels(true);
sectorNumberSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent event) {
sectorValue = sectorNumberSlider.getValue();
System.out.println(sectorValue);
}
});
sectorSliderBorder = BorderFactory.createTitledBorder(blackline, "Number of Sectors: " +sectorValue);
sectorSliderBorder.setTitleJustification(TitledBorder.CENTER);
sectorSlider.setBorder(sectorSliderBorder);
sectorSlider.add(sectorNumberSlider);
【问题讨论】:
-
复制粘贴!
-
请分享一些(更多)不是图片的代码。
-
请不要通过破坏您的帖子为人们增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已在 CC BY-SA 3.0 license 下授予 SE 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 SE 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。
-
.setTitle() method however it is still not updating when the ChangeListener is working.- 您是否显示了从滑块返回的值?如果您有对 Border 的引用并且调用了侦听器并且值正确,则 Border 应该正确更新。如果没有,那么您的代码仍然有问题。发布您正确的minimal reproducible example 来证明问题。
标签: java swing event-listener jslider changelistener