无法使更改侦听器与滑块一起使用

乔·巴特勒

我应该制作一个屏幕保护程序应用程序,该应用程序每五秒钟绘制一定数量的随机线条,并且我们应该包含一个UI,以允许用户输入他们想要绘制的线条数量。我认为滑块是最简单的,但是我无法让滑块更改在绘制线条的循环中使用的lines变量的值。无论我将滑块放在哪里,该值都固定在250

public class Q4  extends JComponent  implements ActionListener, ChangeListener{
private Random rand=new Random();
private Timer time=new Timer(5000,this);
private int lines;
JSlider line=new JSlider(0,500);;
public Q4(){
    JFrame frame=new JFrame();
    frame.setSize(1080,720);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.add(this);
    JSlider line=new JSlider(0,500);
    line.addChangeListener(this);
    line.setMajorTickSpacing(50);
    line.setMinorTickSpacing(25);
    line.setPaintTicks(true);
    line.setPaintLabels(true);
    frame.add(line, BorderLayout.NORTH);
}

@Override 
public void paintComponent(Graphics g) {
    time.start();
    int x=0;
    while(x<lines) {
        int x1=rand.nextInt(getWidth())+1;
        int y1=rand.nextInt(getHeight())+1;
        int x2=rand.nextInt(getWidth())+1;
        int y2=rand.nextInt(getHeight())+1;
        g.drawLine(x1, y1, x2, y2);
        x++;
    }
    System.out.println(lines);
}

@Override
public void actionPerformed(ActionEvent e) {
    repaint();      
}
@Override
public void stateChanged(ChangeEvent e) {
        lines=line.getValue();  
}
卡米克尔
private int lines;
JSlider line=new JSlider(0,500);;
public Q4(){
    ...
    JSlider line=new JSlider(0,500);

问题是您有两个滑块,一个是实例变量,一个是局部变量。您将侦听器添加到本地变量,但是您的侦听器只能访问实例变量。

摆脱局部变量。

其他问题:

  1. 不要以绘画方法启动计时器。绘画方法仅用于绘画。计时器应在构造函数中启动

  2. 在将所有组件添加到面板之后,应调用setVisible(true)

  3. 您的课程不应创建框架。您的自定义组件是一个独立的组件,在构造函数中创建框架与您的组件无关。该框架应在public static void main()用于测试代码方法中创建

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将OnItemLongClick侦听器与ListView一起使用

将useEffect与事件侦听器一起使用

存储事件侦听器无法与对本地存储的任何更新一起使用

JavaScript事件侦听器无法与if语句一起使用

JNativeHook键盘侦听器无法与我的Swing / GUI一起使用

backref关系中的对称性无法与事件侦听器一起正常工作

ListView onClick侦听器混在一起

将Kotlin协程与Spring Kafka侦听器一起使用

我可以将jQuery .trigger()与addEventListener()添加的事件侦听器一起使用吗?

我可以将SqlDependency与多个侦听器/负载平衡一起使用吗

如何使CSS滚动捕捉与JS滚动事件侦听器一起使用?

将 Laravel 事件/侦听器与 Nova 按钮一起使用

返回不同类型的对象时,将访问者或侦听器与ANTLR4一起使用

将事件侦听器与其他类Android的上下文一起使用

在VueJS 2和JSX中将扩展运算符与事件侦听器一起使用

非GUI Jmeter与侦听器一起运行

显示无法与滑块的单选按钮一起使用

将Foreman与Rails 4和本地调试侦听器一起使用时,服务器没有响应

滑块侦听器循环中的 JTextField

为什么即使使用onChange侦听器也无法在React中更改输入值

在 createStore() 中使用 applyMiddleware 时无法更改侦听器状态

键盘侦听器无法更改 this.state

ValueProperty更改侦听器

如何使用 onclick 事件侦听器一次更改多个元素的背景颜色?

在不通知侦听器的情况下更改滑块的值

如何设置滑块更改侦听器仅在JavaFX中释放鼠标拖动时才触发?

使用属性更改侦听器更新挥杆组件

Android cardview,使用开关侦听器更改背景颜色

Django-使用Javascript onclick侦听器更改Dictsort?