展开全部
程序我已经封装好了,并且e69da5e6ba9062616964757a686964616f31333330353435有使用样例,你照着用应该就差不多了如果说是主窗口的方法,在设置构造函数的时候可以添加一个主窗口类型的参数,实例化的时候在主窗口
new ClockLabel("00:00:05",this);
将主窗口作为参数传进去,然后你就能在时钟类里调用主窗口的方法了。注释的已经很详细了,时钟类代码如下:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import com.sun.org.apache.bcel.internal.generic.RETURN;
public class ClockLabel extends JLabel implements ActionListener {
private int hour = 0;
private int min = 0;
private int sec = 0;
private Timer t;
private String timeStr;
private boolean finish = false;// 判断考试是否结束标志位,当值为false的时候考试结束
public ClockLabel() {
// TODO Auto-generated constructor stub
init();
}
public ClockLabel(String timeStr) {//参数为考试时间
init();
setTime(timeStr);
}
private void init() {
t = new Timer(1000, this);// 初始化计时器
}
private boolean begain() {
// 请输入考试时间,例如:\"01:00:00\"
if (!checkStr())
return false;
hour = Integer.parseInt(timeStr.substring(0, 2));
min = Integer.parseInt(timeStr.substring(3, 5));
sec = Integer.parseInt(timeStr.substring(6));
finish = true;//初始化结束标志位
showTime();
return true;
}
private boolean checkStr() {
// 检测考试时间是否符合格式
if (timeStr == null) {
System.out.println("尚未设置考试时间");
return false;
}
if (!timeStr.matches("\\d{2}:\\d{2}:\\d{2}")) {// 格式可以根据你的需求自己修改
System.out.println("输入的时间格式不正确");// 显示在控制台的提示语句
return false;
}
return true;
}
public void setTime(String timeStr) {//设置考试时间
this.timeStr = timeStr;
if (!begain())
System.out.println("时间设置不正确,初始化失败");
}
public boolean timeStart() {// 考试开始方法,返回值为true表示开始成功
if (finish) {//如果考试没有结束,继续开始计时
t.start();
return true;
} else
JOptionPane.showMessageDialog(null, "考试已经结束!");
return false;
}
public boolean timeStop() {// 预设的暂停考试方法,返回值为true表示暂停成功
if (finish) {
t.stop();
return true;
} else
JOptionPane.showMessageDialog(null, "考试已经结束!");
return false;
}
public boolean resetTime() {// 重置考试时间为初始状态的方法
return begain();
}
public void showTime() {
// 在label上显示时间的方法
String str = "";
if (hour < 10)
str += "0";
str += hour + ":";
if (min < 10)
str += "0";
str += min + ":";
if (sec < 10)
str += "0";
str += sec;
this.setText("剩余时间:" + str);
}
@Override
public void actionPerformed(ActionEvent ae) {
// 时钟计时事件
sec--;
if (sec == -1) {
sec = 59;
min--;
if (min == -1) {
min = 59;
hour--;
if (hour == -1) {
t.stop();
finish = false;//考试结束,修改标志位
JOptionPane.showMessageDialog(getParent(), "考试结束!");
//自动交卷方法设置处
return;
}
}
}
if (hour == 0 && min == 5 && sec == 0){
//默认方法是将显示内容设置为提示语句,可自行更改
this.setText("离考试结束还有5分钟!!!");
}
else
showTime();
}
}
使用样例类代码如下:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ClockLabelDemo extends JFrame {
private ClockLabel clockLabel;
private JPanel pane1, pane2;
private JButton button1, button2;
public ClockLabelDemo() {
// TODO Auto-generated constructor stub
this.setSize(200, 100);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize;
scrnsize = toolkit.getScreenSize();
setLocation(scrnsize.width / 2 - getWidth() / 2,
scrnsize.height / 2 - getHeight() / 2);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
clockLabel = new ClockLabel("00:00:05");// 请输入考试时间,例如:\"01:00:00\"
button1 = new JButton("开始考试");
button2 = new JButton("暂停考试");
pane1 = new JPanel();
pane2 = new JPanel();
pane1.add(clockLabel);
pane2.setLayout(new FlowLayout());
pane2.add(button1);
pane2.add(button2);
this.add(pane1, BorderLayout.CENTER);
this.add(pane2, BorderLayout.SOUTH);
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
clockLabel.timeStart();
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
clockLabel.timeStop();
}
});
this.setVisible(true);
}
public static void main(String[] args) {
new ClockLabelDemo().setVisible(true);
}
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起