用于停止和反转对象的按钮侦听器(GUI)

时间:2013-12-06 21:20:33

标签: java user-interface slider listener actionlistener

我创建了两个名为ControlPanel和Bicycle Panel的类。它们都使用Japplet(GUI)运行。自行车等级创造了一辆蓝色和一辆红色的自行车。控制面板设置显示并创建按钮。按钮用于让用户告诉自行车移动,倒车和停止。我显示工作正常,但我有移动,停止和倒车的麻烦。首次执行程序时,自行车开始自动移动。但是,当我告诉它停止或反转时,我的按钮不起作用。我需要一些帮助,我可以改变我的代码,使其工作或我缺少什么。还有一个滑块可以改变自行车的速度。

ControlPanel -

 import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;

 public class ControlPanel extends JPanel
 {
//1, blueBikeDelay;



//The constructor creates 6 buttons, 2 sliders, and 2 bicycle panels
//and organize them using layouts.
public ControlPanel(int width, int height)
{
    this.width = width;
    this.height = height;

    //
    JLabel = new JLabel("Red Delay");       
    JSlider = new JSlider(JSlider.VERTICAL);        
            add(sp);

    setPreferredSize(new Dimension(width,height));
}


private class ButtonListener implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {.reverse();
    }
} //end of ButtonListener

private class SliderListener implements ChangeListener
{

2 个答案:

答案 0 :(得分:2)

主要问题(使用你的按钮)是他们被宣布两次的事实。一次作为实例变量(您在actionPerformed方法中使用)并再次在构造函数中。

这意味着您尝试在actionPerformed方法中引用的按钮与屏幕上的按钮不同(实际上可能是null

删除构造函数中的第二个声明。

(看似)第二个问题,即你开始时自行车移动(不确定这是否是一个问题),是因为它们具有非零增量(或step)。如果您不希望它们在程序启动时开始移动,您只需将步骤设置为0即可开始

答案 1 :(得分:0)

BicyclePanel

中查看
timer = new Timer(delay, new MoveListener());        
timer.start();

在构造函数中启动计时器。因此,当您为BicyclePanel创建实例时,会启动计时器。