java JSlider不更新?
我是一个在windows上画画的新手,现在我有点被卡住了。目前我只是在测试
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class test extends JFrame
{
JSlider slider1;
public test()
{
slider1 = new JSlider(JSlider.VERTICAL, 0, 50, 0);
setLayout(new FlowLayout(FlowLayout.TRAILING));
add(slider1);
}
public void changeValue ()
{
slider1.setValue(25);
}
public static void main(String args[]) {
test gui = new test();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(550,250);
gui.setVisible(true);
}
}
所以我创建了一个称为slider1的JSlider,我给它指定了方向和值。当我调用changeValue方法时,它显然改变了slider1的值。但是GUI上没有任何更改。 有人能给我指一下正确的方向吗? 它是否具有刷新GUI的功能
# 1 楼答案
您需要以某种方式调用changeValue:
我刚刚添加了一个带有ActionListener的JButton来实现这一点,并通过以下代码使其适用于我:
# 2 楼答案
您没有在main方法中调用
changeValue()
。使用changeValue()方法和slider1static
,然后在main中调用changeValue()
最好的做法是将Java类名中每个单词的第一个字母大写
# 3 楼答案
在
test()
构造函数中初始化slider1
变量后,添加以下行,以便可以设置jslider tick值并在GUI中可见:您可以自行更改设置为5的勾号间距。使用
add()
方法添加滑块不是一个好的做法,请改用getContentPane().add()
,因此您的构造函数应该如下所示:我注意到您没有在
main()
方法中调用changeValue()
方法。正如您的方法名称所暗示的,它似乎是一个setter,但是您没有参数化地给出设置值,这是一个好的实践吗?在我看来,事实并非如此。而且changeValue()
对setValue()
做了同样的事情,为什么要创建一个冗余方法呢?。不管怎样,你可以用这个:在主要方法中,使用以下语句:
要查看更改滑块值的即时效果,我的意思是更新它,使用按钮或其他组件,向其添加
ActionListener
,以便您可以在单击时更新滑块值,例如