嘿伙计们,我有这个编码,我有两个图像,一个是打开的灯泡,另一个是关闭的灯泡。我有两个按钮一对一和一对。当我按下开启按钮时,灯泡的图像出现,当我按下灯泡时,会出现关灯泡的图像。我基本上是一个offListener类和一个OnListener,可以关闭/打开灯泡并重新绘制灯泡面板。
现在我要做的是使用TIMER类修改此代码,并且可能也使用TimerTask。我想(一旦灯泡打开)开始倒计时10秒,说10秒后灯泡将关闭,一旦移位时间达到10秒,灯泡将重新点亮灯泡图像。
所以我想的是导入Timer并在其中使用TimerTask。那么我的大多数修改代码都会驻留在OnListener类中吗?我必须将它扩展到TaskTimer吗?对不起,这对我来说有点意外。我只是想了解它。如果有人有时间并且愿意和我谈谈这件事我会更开心,但是评论确实有帮助!
//********************************************************************
// LightBulbControls.java
//
// Represents the control panel for the LightBulb program.
//********************************************************************
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Timer;
public class LightBulbControls extends JPanel
{
private LightBulbPanel bulb;
private JButton onButton, offButton;
private Timer timer;
private int DELAY;
private JLabel timeLabel;
//-----------------------------------------------------------------
// Sets up the lightbulb control panel.
//-----------------------------------------------------------------
public LightBulbControls(LightBulbPanel bulbPanel)
{
bulb = bulbPanel;
onButton = new JButton("On");
onButton.setEnabled(false);
onButton.setMnemonic('n');
onButton.setToolTipText("Turn it on!");
onButton.addActionListener(new OnListener());
offButton = new JButton("Off");
offButton.setEnabled(true);
offButton.setMnemonic('f');
offButton.setToolTipText("Turn it off!");
offButton.addActionListener(new OffListener());
timeLabel = new JLabel("0.0");
timeLabel.setBackground(Color.white);
timeLabel.setVerticalAlignment(SwingConstants.BOTTOM);
DELAY = 10;
timer = new Timer();
//timer.schedule(new OnListener(), DELAY*1000);
setBackground(Color.black);
add(onButton);
add(offButton);
add(timeLabel);
}
//*****************************************************************
// Represents the listener for the On button.
//*****************************************************************
private class OnListener implements ActionListener
{
//--------------------------------------------------------------
// Turns the bulb on and repaints the bulb panel.
//--------------------------------------------------------------
public void actionPerformed(ActionEvent event)
{
bulb.setOn(true);
onButton.setEnabled(false);
offButton.setEnabled(true);
bulb.repaint();
}
}
//*****************************************************************
// Represents the listener for the Off button.
//*****************************************************************
private class OffListener implements ActionListener
{
//--------------------------------------------------------------
// Turns the bulb off and repaints the bulb panel.
//--------------------------------------------------------------
public void actionPerformed(ActionEvent event)
{
bulb.setOn(false);
onButton.setEnabled(true);
offButton.setEnabled(false);
bulb.repaint();
}
}
}