<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了java實現時鐘錶盤的具體程式碼,供大家參考,具體內容如下
設計並實現一個模擬時鐘功能的應用程式。程式中應顯示時針、分針和秒針,並同時以數位形式顯示當前時間。
實現結果:
原始碼如下:
//ClockPanel.java import javax.swing.*; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Timer; import java.util.TimerTask; import java.text.SimpleDateFormat; import java.util.Locale; import java.awt.*; import java.awt.event.*; public class ClockPanel extends JPanel{ private GregorianCalendar calendar; private JButton btn; private JButton btn2; private int currentState=8; private String zone; private int hourTemp; final int X=320, Y=240, R=120; // 圓心座標,半徑 private int xPos,yPos; private int hour,minute,second; private int xHour,yHour,xMinute,yMinute,xSecond,ySecond;//錶針位置(大端) private int xHour1,yHour1,xMinute1,yMinute1,xSecond1,ySecond1;//錶針位置(小端) private double a_sec,a_min ,a_hour;//角度 ClockPanel() { // 建立定時器物件 Timer t = new Timer(); Task task = new Task(); t.schedule(task, 0, 1000); setLayout(new BorderLayout(10,20)); btn=new JButton("時區 上"); btn2=new JButton("時區 下"); btn.setBorder(BorderFactory.createRaisedBevelBorder()); btn2.setBorder(BorderFactory.createRaisedBevelBorder()); btn.setBackground(Color.green); btn2.setBackground(Color.green); btn.addActionListener(new ButtonListener()); btn2.addActionListener(new ButtonListener()); add(btn,BorderLayout.WEST); add(btn2,BorderLayout.EAST); } //相關事件處理 private class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent event) { if (event.getSource()==btn) currentState++; if (event.getSource()==btn2) currentState--; } } public void paintComponent(Graphics g){ super.paintComponent(g); double alfa; //所畫點對應的角度 Graphics2D g2d=(Graphics2D)g; BasicStroke bstroke=new BasicStroke(1.0f); BasicStroke bstroke2=new BasicStroke(2.0f); BasicStroke bstroke3=new BasicStroke(3.0f); g2d.setStroke(bstroke2); for(int i=0;i<=360;i+=6) { alfa=Math.toRadians(i); //角度用弧度表示 xPos=X+(int)(R*Math.cos(alfa)); // x座標 yPos=Y-(int)(R*Math.sin(alfa)); // y座標 int xBegin=320+(int)(144*Math.sin(alfa)); int yBegin=240-(int)(144*Math.cos(alfa)); int xEnd=320+(int)(159*Math.sin(alfa)); int yEnd=240-(int)(159*Math.cos(alfa)); g2d.setColor(Color.BLACK); g2d.drawLine(xBegin,yBegin,xEnd,yEnd); g2d.setColor(Color.RED); switch(i){ // 寫時鐘數位刻度 case 0: g2d.drawString("3", xPos,yPos); break; case 90: g2d.drawString("12", xPos,yPos); break; case 180: g2d.drawString("9", xPos,yPos); break; case 270: g2d.drawString("6",xPos,yPos); break; } if(i%30==0){ g2d.drawLine(xBegin,yBegin,xEnd,yEnd); } } g2d.setColor(Color.BLACK); g2d.setStroke(bstroke3); g2d.drawLine(X, Y, xHour,yHour); // 畫時針 g2d.drawLine(X, Y, xHour1,yHour1); g2d.setColor(Color.BLUE); g2d.setStroke(bstroke2); g2d.drawLine(X, Y, xMinute,yMinute); // 畫分針 g2d.drawLine(X, Y, xMinute1,yMinute1); g2d.setColor(Color.RED); g2d.setStroke(bstroke); g2d.drawLine(X, Y, xSecond,ySecond); // 畫秒針 g2d.drawLine(X, Y, xSecond1,ySecond1); //錶盤中心點1 g2d.drawOval(317,237,6,6); g2d.fillOval(317,237,6,6); //錶盤中心點2 g2d.setColor(Color.BLACK); g2d.drawOval(319,238,4,4); g2d.fillOval(319,238,4,4); //錶盤中心圓環 g2d.setColor(Color.ORANGE); g2d.drawOval(300,220,40,40); g2d.setColor(Color.black); g2d.drawString("15010140079",290,376); GregorianCalendar gre=new GregorianCalendar(); SimpleDateFormat dateforamt1=new SimpleDateFormat("yyyy年MM月dd日E"); //SimpleDateFormat dateforamt2=new SimpleDateFormat("H時m分s秒"); g2d.setColor(Color.black); g2d.setFont(new Font("SAN_SERIF",Font.BOLD,20)); g2d.drawString(dateforamt1.format(gre.getTime()),250,50); g2d.drawString(hour+"時"+minute+"分"+second+"秒",260,430); //時區判斷 if(currentState>12){ currentState=-11; } else if(currentState<-11){ currentState=12; } if(currentState<=12&¤tState>=1) zone="東"+currentState+"區"; else zone="西"+(1-currentState)+"區"; g2d.drawString(zone,170,50); } class Task extends TimerTask { public void run() { calendar = new GregorianCalendar(); hourTemp=currentState>0?(currentState-8):(currentState-1); hour = calendar.get(Calendar.HOUR)+hourTemp; minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); a_sec = second * 2 * Math.PI / 60; a_min = minute * 2 * Math.PI / 60 + a_sec / 60; a_hour = hour * 2 * Math.PI / 12 + a_min / 12; // 計算時、分、秒針的末端位置 xSecond=320+(int)(110*Math.sin(a_sec)); ySecond=240-(int)(110*Math.cos(a_sec)); xMinute=320+(int)(90 *Math.sin(a_min)); yMinute=240-(int)(90 *Math.cos(a_min)); xHour= 320+(int)(70 *Math.sin(a_hour)); yHour= 240-(int)(70 *Math.cos(a_hour)); xSecond1=320-(int)(22*Math.sin(a_sec)); ySecond1=240+(int)(22*Math.cos(a_sec)); xMinute1=320-(int)(15*Math.sin(a_min)); yMinute1=240+(int)(15*Math.cos(a_min)); xHour1 =320-(int)(5 *Math.sin(a_hour)); yHour1 =240+(int)(5 *Math.cos(a_hour)); repaint(); } } } // //Clock.java import javax.swing.*; public class Clock{ public static void main(String[] args) { JFrame frame=new JFrame("Clock"); //建立圖文框 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new ClockPanel()); //新增面板 frame.setVisible(true); frame.setSize(640,480); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45