private int hour
private int minute
private int second
public void setTime(int hour,int minute,int second){ //设置时间的方法
this.hour = hour//传进的参数赋值给成员变量
this.minute = minute
this.second = second
}
public String showTime(){ //显示时间的方法
return "小时:"+hour+" 分钟:"+minute+" 秒: "+second
}
}
希望能够帮到你
按照你的要求编写的java输入时间显示钟表的程序如下:import java.awt.BorderLayoutimport java.awt.Graphics
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JPanel
import javax.swing.JTextField
public class Clock extends JFrame implements ActionListener{ JLabel jl_hour=new JLabel("时")
JLabel jl_minute=new JLabel("分")
JLabel jl_second=new JLabel("秒")
JTextField jtf_hour=new JTextField(10)
JTextField jtf_minute=new JTextField(10)
JTextField jtf_second=new JTextField(10)
JButton jb_input=new JButton("显示")
JPanel jp_input=new JPanel()
ClockPanel jp_clock=new ClockPanel()
Clock(){
super("Clock")
jb_input.addActionListener(this)
jp_input.add(jtf_hour)jp_input.add(jl_hour)
jp_input.add(jtf_minute)jp_input.add(jl_minute)
jp_input.add(jtf_second)jp_input.add(jl_second)
jp_input.add(jb_input)
add(jp_input,BorderLayout.NORTH)
add(jp_clock,BorderLayout.CENTER)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
setSize(600,400)
this.setLocationRelativeTo(null)
setVisible(true)
}
public static void main(String[] args) {
new Clock()
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==jb_input){
int Hour=Integer.parseInt(jtf_hour.getText())
int Minute=Integer.parseInt(jtf_minute.getText())
int Second=Integer.parseInt(jtf_second.getText())
jp_clock.setHour(Hour)
jp_clock.setMinute(Minute)
jp_clock.setSecond(Second)
jp_clock.repaint()
}
}
}
class ClockPanel extends JPanel {
private double CenterX,CenterY
private double Radius=150
private double HPointX,HPointY,MPointX,MPointY,SPointX,SPointY
private int Hour,Minute,Second
private final double PI=3.1415926
public int getHour() {
return Hour
}
public void setHour(int hour) {
Hour = hour
}
public int getMinute() {
return Minute
}
public void setMinute(int minute) {
Minute = minute
}
public int getSecond() {
return Second
}
public void setSecond(int second) {
Second = second
}
ClockPanel(){
this.Hour=0
this.Minute=0
this.Second=0
}
ClockPanel(int Hour,int Minute,int Second){
this.Hour=Hour
this.Minute=Minute
this.Second=Second
}
public void paintComponent(Graphics g){
super.paintComponent(g)
CenterX=this.getWidth()/2
CenterY=this.getHeight()/2
double HRadian=(PI/6)*Hour+(PI/360)*Minute+(PI/21600)*Second
double MRadian=(PI/30)*Minute+(PI/1800)*Second
double SRadian=(PI/30)*Second
HPointX=CenterX+Radius*0.6*Math.sin(HRadian)
HPointY=CenterY-Radius*0.6*Math.cos(HRadian)
MPointX=CenterX+Radius*0.8*Math.sin(MRadian)
MPointY=CenterY-Radius*0.8*Math.cos(MRadian)
SPointX=CenterX+Radius*Math.sin(SRadian)
SPointY=CenterY-Radius*Math.cos(SRadian)
g.drawOval((int)(CenterX-Radius), (int)(CenterY-Radius), (int)(2*Radius),(int)(2*Radius))
g.drawString("12",(int)(CenterX),(int)(CenterY-Radius)+10)
g.drawString("3",(int)(CenterX+Radius)-6 , (int)(CenterY))
g.drawString("6", (int)(CenterX), (int)(CenterY+Radius))
g.drawString("9",(int)(CenterX-Radius), (int)(CenterY))
g.drawLine((int)(CenterX), (int)(CenterY), (int)(SPointX), (int)(SPointY))
g.drawLine((int)(CenterX), (int)(CenterY), (int)(MPointX), (int)(MPointY))
g.drawLine((int)(CenterX), (int)(CenterY), (int)(HPointX), (int)(HPointY))
}
}
long base=new GregorianCalendar(0,0,0,0,0,0).getTime().getTime()定义一个0毫秒的基数,为了后面使用format做准备。DateFormat df=new SimpleDateFormat("HH:mm:ss")设置格式化的样式
for循环是安装一天时间长度的总共有60*60*12*2秒(这个因为要精确到秒),在每个秒长度时间上,分别获得时针、分钟和秒针所在表盘的位置(表盘整个圆是60秒)。
然会判断三个针位置是否是一样的,如果一样就输入该时间。