gpt4 book ai didi

java - 如何通过将 ChangeListener 添加到 JSlider 来更新整型变量

转载 作者:行者123 更新时间:2023-12-02 11:33:55 25 4
gpt4 key购买 nike

我现在对 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);

最佳答案

will not display the current value in the border where I want it to.

那是因为您没有更改边框的属性。

您所做的只是更改变量的值。该变量与边界没有任何关联。您刚刚在创建边框时使用变量的值来初始设置边框的标题。

ChangeListener 中的代码应该是:

sectorSliderBorder.setTitle( ... );

关于java - 如何通过将 ChangeListener 添加到 JSlider 来更新整型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com