我创建了两个名为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
{
答案 0 :(得分:2)
主要问题(使用你的按钮)是他们被宣布两次的事实。一次作为实例变量(您在actionPerformed方法中使用)并再次在构造函数中。
这意味着您尝试在actionPerformed
方法中引用的按钮与屏幕上的按钮不同(实际上可能是null
)
删除构造函数中的第二个声明。
(看似)第二个问题,即你开始时自行车移动(不确定这是否是一个问题),是因为它们具有非零增量(或step
)。如果您不希望它们在程序启动时开始移动,您只需将步骤设置为0
即可开始
答案 1 :(得分:0)
在BicyclePanel
timer = new Timer(delay, new MoveListener());
timer.start();
在构造函数中启动计时器。因此,当您为BicyclePanel
创建实例时,会启动计时器。