javaguijslider
我刚开始使用java:) 我的问题是: 我想制作一个带有JSlider的GUI,然后滑块移动,我想更改JTextField中的数字。 我试了很多东西,但总是出错 如果我尝试更新GUI信息,总是会出现错误,但如果我使用System.out.println打印滑块的更改值,则不会出现错误。为什么呢 这是我的代码片段:javaguijslider,java,Java,我刚开始使用java:) 我的问题是: 我想制作一个带有JSlider的GUI,然后滑块移动,我想更改JTextField中的数字。 我试了很多东西,但总是出错 如果我尝试更新GUI信息,总是会出现错误,但如果我使用System.out.println打印滑块的更改值,则不会出现错误。为什么呢 这是我的代码片段: ATSTUMAS_SLIDER = new JSlider(0, 10000, 0); ATSTUMAS_SLIDER.setLocation(150, 375); ATSTUMAS_
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);
为什么不停止创建新的ATSTUMAS_计数器实例,只更新文本值
@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”方法上更新,如果在用户停止移动滑块之前重新绘制值很重要。Java代码约定中的一条建议是,变量以小写开头,类以大写开头,方法以小写开头,始终使用camelcase样式。建议使用适当的布局管理器为什么不使用JTextField#setText?这一点很好,只是当我浏览javadoc时,我肯定错过了它,甚至到了我需要挖掘文档细节的地步。