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