我想在JPanel 上做一个JLabel来控制时间
可是在Sleep1000后该怎么写才能使时间动起来啊
是不是一定要用Graphics
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Date;import javax.swing.JLabel;
import javax.swing.JPanel;public class Clock extends JPanel implements Runnable{
Date data=new Date();
String str="";
JLabel clock=new JLabel();
public Clock(){
clock.setBackground(Color.BLUE);
clock.setLayout(null);
str=data.toLocaleString();
clock.setText(str);
this.add(clock);
}
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
可是在Sleep1000后该怎么写才能使时间动起来啊
是不是一定要用Graphics
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Date;import javax.swing.JLabel;
import javax.swing.JPanel;public class Clock extends JPanel implements Runnable{
Date data=new Date();
String str="";
JLabel clock=new JLabel();
public Clock(){
clock.setBackground(Color.BLUE);
clock.setLayout(null);
str=data.toLocaleString();
clock.setText(str);
this.add(clock);
}
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
javax.swing.Timer
另外,设置语句要放在单独的线程里,不然会卡原始线程的
while(true)
{
Calendar c=Calendar.getInstance();
nf.setMinimumIntegerDigits(2);
String str=nf.format(c.get(Calendar.HOUR_OF_DAY))+":"
+nf.format(c.get(Calendar.MINUTE))+":"
+nf.format(c.get(Calendar.SECOND));
clock.setText(str);
try{
Thread.sleep(1000);
}catch(InterruptedException ex){}
}这样就可以的啊
while(true)
{
Calendar c=Calendar.getInstance();
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumIntegerDigits(2);
String str=nf.format(c.get(Calendar.HOUR_OF_DAY))+":"
+nf.format(c.get(Calendar.MINUTE))+":"
+nf.format(c.get(Calendar.SECOND));
clock.setText(str);
try{
Thread.sleep(1000);
}catch(InterruptedException ex){}
}
刚才打少了一条语句了