按照你的要求編寫的java輸入時間顯示鐘表的程序如下:
成都創(chuàng)新互聯(lián)公司專注于壽縣企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),購物商城網(wǎng)站建設(shè)。壽縣網(wǎng)站建設(shè)公司,為壽縣等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
import java.awt.BorderLayout;import 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));
}
}
public class Horologe{
private int hour;
private int minute;
private int second;
public void setTime(int hour,int minute,int second){ //設(shè)置時間的方法
this.hour = hour; //傳進的參數(shù)賦值給成員變量
this.minute = minute;
this.second = second;
}
public String showTime(){ //顯示時間的方法
return "小時:"+hour+" 分鐘:"+minute+" 秒: "+second;
}
}
希望能夠幫到你
如下:
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.JButton;
import?javax.swing.JFrame;
import?javax.swing.JPanel;
import?javax.swing.Timer;
import?java.awt.geom.*;
import?java.util.*;
class?Clock?extends?Canvas
implements?ActionListener{
static??JButton?jb=new?JButton("開始");
static?JButton?jb1=new?JButton("暫停");
Date?date;
Timer?secondTime;
int?hour,munite,second;
Line2D?secondLine,muniteLine,hourLine;
int?a,b,c;
double?pointSX[]=new?double[60],//用來表示秒針端點坐標的數(shù)組
pointSY[]=new?double[60],
pointMX[]=new?double[60],?//用來表示分針端點坐標的數(shù)組
pointMY[]=new?double[60],
pointHX[]=new?double[60],?//用來表示時針端點坐標的數(shù)組
pointHY[]=new?double[60];
Clock()
{?secondTime=new?Timer(1000,this);
pointSX[0]=0;?????????????????????????//12點秒針位置
pointSY[0]=-100;
pointMX[0]=0;?????????????????????????//12點分針位置
pointMY[0]=-90;
pointHX[0]=0;?????????????????????????//12點時針位置
pointHY[0]=-70;
double?angle=6*Math.PI/180;??????????//刻度為6度
for(int?i=0;i59;i++)????????????????//計算出各個數(shù)組中的坐標
{?pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i];
pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle);
pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i];
pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle);
pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];
pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle);
}
for(int?i=0;i60;i++)
{?pointSX[i]=pointSX[i]+120;????????????//坐標平移
pointSY[i]=pointSY[i]+120;
pointMX[i]=pointMX[i]+120;????????????//坐標平移
pointMY[i]=pointMY[i]+120;
pointHX[i]=pointHX[i]+120;????????????//坐標平移
pointHY[i]=pointHY[i]+120;
}
secondLine=new?Line2D.Double(0,0,0,0);
muniteLine=new?Line2D.Double(0,0,0,0);
hourLine=new?Line2D.Double(0,0,0,0);
secondTime.start();????????//秒針開始計時
}
public?void?paint(Graphics?g)
{???for(int?i=0;i60;i++)?????//繪制表盤上的小刻度和大刻度
{??int?m=(int)pointSX[i];
int?n=(int)pointSY[i];
if(i%5==0)
{?g.setColor(Color.red);
g.fillOval(m-4,n-4,8,8);
}
else
{?g.setColor(Color.cyan);
g.fillOval(m-2,n-2,4,4);
}
}
g.fillOval(115,115,10,10);??//鐘表中心的實心圓
Graphics2D?g_2d=(Graphics2D)g;
g_2d.setColor(Color.red);
g_2d.draw(secondLine);
BasicStroke?bs=
new?BasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
g_2d.setStroke(bs);
g_2d.setColor(Color.blue);
g_2d.draw(muniteLine);
bs=new?BasicStroke(6f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);
g_2d.setStroke(bs);
g_2d.setColor(Color.green);
g_2d.draw(hourLine);
}
public?void?actionPerformed(ActionEvent?e)
{?if(e.getSource()==secondTime){
date=new?Date();
String?s=date.toString();
hour=Integer.parseInt(s.substring(11,13));
munite=Integer.parseInt(s.substring(14,16));
second=Integer.parseInt(s.substring(17,19));?//獲取時間中的秒
int?h=hour%12;
a=second;????????????????????//秒針端點的坐標
b=munite;????????????????????//分針端點的坐標
c=h*5+munite/12;?????????????//時針端點的坐標
secondLine.setLine(120,120,(int)pointSX[a],(int)pointSY[a]);
muniteLine.setLine(120,120,(int)pointMX[b],(int)pointMY[b]);
hourLine.setLine(120,120,(int)pointHX[c],(int)pointHY[c]);
repaint();
}?if(e.getSource()==jb){
?secondTime.start();
}if(e.getSource()==jb1){
?secondTime.stop();
}
}
public?static?void?main(String?args[]){
?JFrame?win=new?JFrame("時鐘");
?JPanel?jp=new?JPanel();
?jp.add(jb);
?jp.add(jb1);
?Clock?clock=new?Clock();
?jb.addActionListener(clock);
?jb1.addActionListener(clock);
?win.add(clock,BorderLayout.CENTER);
?win.add(jp,"South");
?win.setVisible(true);
?win.setSize(246,300);
?win.setDefaultCloseOperation(3)?;
?win.validate();
???}
}
運行截圖:
有問題就追問,滿意請采納。