1

我刚开始使用java :)。

我的问题是:

我想用一个 JSlider 制作一个 GUI,然后那个滑块移动我想要 JTextField 中的一个数字改变。我尝试了很多东西,但总是出错。

如果我尝试更新 GUI 信息,我总是会收到错误消息,但如果我使用 System.out.println 打印滑块的更改值,我不会收到错误消息。这是为什么?

这是我的代码片段:

ATSTUMAS_SLIDER = new JSlider(0, 10000, 0);
ATSTUMAS_SLIDER.setLocation(150, 375);
ATSTUMAS_SLIDER.setSize(450,50);
ATSTUMAS_SLIDER.setMajorTickSpacing(2500);
ATSTUMAS_SLIDER.setMinorTickSpacing(250);
ATSTUMAS_SLIDER.setPaintTicks(true);
ATSTUMAS_SLIDER.setPaintLabels(true);
PANE.add(ATSTUMAS_SLIDER);



ATSTUMAS_SLIDER.addChangeListener(new ChangeListener(){ 
   @Override public void stateChanged(ChangeEvent e) 
   { 
      if (ATSTUMAS_SLIDER.getValueIsAdjusting()){ 
        int a = ATSTUMAS_SLIDER.getValue(); 
        ATSTUMAS_COUNTER = new JTextField(String.valueOf(a));
      } 
   } 
});


ATSTUMAS_COUNTER.setLocation(640, 385);
ATSTUMAS_COUNTER.setSize(40, 25);
ATSTUMAS_COUNTER.setEditable(false);
PANE.add(ATSTUMAS_COUNTER);
4

1 回答 1

0

为什么不停止创建新的 ATSTUMAS_COUNTER 实例,只更新文本值?

@Override
public void stateChanged(ChangeEvent e) {
  Document doc = ATSTUMAS_COUNTER.getDocument();
  doc.remove(0, doc.getLength());
  doc.insert(0, String.valueOf(ATSTUMAS_SLIDER.getValue()), null); 
} 

此外,如果在人停止移动滑块之前重绘值很重要,则仅更新“isAdjusting”方法。

于 2013-09-26T20:11:09.240 回答