Java版世界時鐘樣本

來源:互聯網
上載者:User

這是一個Java版的世界時鐘樣本,移植自Gerrit建立的同名Swing應用(http://www.jug-muenster.de/swing-worldclock-427
),需要運行在JRE1.5或以上環境當中。

 

移植此樣本主要是因為前一陣移植過Gerrit的swing原子鐘樣本,所謂好事成雙,這個世界時鐘的樣本自然不能放過(話說Gerrit為什麼那麼喜歡做時鐘?……),畢竟Java案頭應用執行個體本就不多,但凡有參考價值的還是要多做匯總才好。

 

另外,此樣本中關於多時區的分辨與顯示部分,在非案頭應用中也具備一定的參考價值。

 

PS:由於此樣本以LGame-Simple-0.2.5開發,所以也可以看作是世界時鐘的AWT實現。

 

(源碼在jar中):http://loon-simple.googlecode.com/files/WorldClock.7z

 

運行代碼如下所示(構建過程省略了Swing原版的一些步驟):

 

package org.loon.test;<br />import java.awt.Graphics2D;<br />import java.awt.event.KeyEvent;<br />import java.awt.event.MouseEvent;<br />import java.awt.image.BufferedImage;<br />import org.loon.framework.game.simple.GameScene;<br />import org.loon.framework.game.simple.core.graphics.Deploy;<br />import org.loon.framework.game.simple.core.graphics.Screen;<br />import org.loon.framework.game.simple.utils.GraphicsUtils;<br />/**<br /> * Copyright 2008 - 2009<br /> *<br /> * Licensed under the Apache License, Version 2.0 (the "License"); you may not<br /> * use this file except in compliance with the License. You may obtain a copy of<br /> * the License at<br /> *<br /> * http://www.apache.org/licenses/LICENSE-2.0<br /> *<br /> * Unless required by applicable law or agreed to in writing, software<br /> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT<br /> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the<br /> * License for the specific language governing permissions and limitations under<br /> * the License.<br /> *<br /> * @project loonframework<br /> * @author chenpeng<br /> * @email:ceponline@yahoo.com.cn<br /> * @version 0.1<br /> */<br />public class Main extends Screen {<br />// 此樣本移植自http://www.jug-muenster.de/swing-worldclock-427/同名應用<br />public Main() {<br />// 設定表單背景<br />this.setBackground(createBackgroundImage());<br />// 建立時間精靈<br />AnalogClock clock1 = new AnalogClock(City.Beijing, 25, 18, 74, 74);<br />AnalogClock clock2 = new AnalogClock(City.NewYork, 25, 108, 74, 74);<br />AnalogClock clock3 = new AnalogClock(City.SanFrancisco, 25, 198, 74, 74);<br />AnalogClock clock4 = new AnalogClock(City.Dakka, 25, 288, 74, 74);<br />// 添加精靈<br />this.add(clock1);<br />this.add(clock2);<br />this.add(clock3);<br />this.add(clock4);<br />}<br />public void draw(Graphics2D g) {<br />}<br />/**<br /> * 建立背景圖案<br /> *<br /> * @return<br /> */<br />private BufferedImage createBackgroundImage() {<br />final java.awt.image.BufferedImage IMAGE = GraphicsUtils.createImage(<br />getWidth(), getHeight(), java.awt.Transparency.TRANSLUCENT);<br />java.awt.Graphics2D g2 = IMAGE.createGraphics();<br />g2.setRenderingHint(java.awt.RenderingHints.KEY_ANTIALIASING,<br />java.awt.RenderingHints.VALUE_ANTIALIAS_ON);<br />java.awt.geom.Point2D BACKGROUND_START = new java.awt.geom.Point2D.Double(<br />0, 0);<br />java.awt.geom.Point2D BACKGROUND_STOP = new java.awt.geom.Point2D.Double(<br />0, getHeight());<br />final float[] BACKGROUND_FRACTIONS = { 0.0f, 1.0f };<br />final java.awt.Color[] BACKGROUND_COLORS = {<br />new java.awt.Color(0x505652), new java.awt.Color(0x393E3A) };<br />final java.awt.Shape BACKGROUND = new java.awt.geom.RoundRectangle2D.Double(<br />0, 0, getWidth(), getHeight(), 5, 5);<br />final java.awt.LinearGradientPaint BACKGROUND_GRADIENT = new java.awt.LinearGradientPaint(<br />BACKGROUND_START, BACKGROUND_STOP, BACKGROUND_FRACTIONS,<br />BACKGROUND_COLORS);<br />g2.setPaint(BACKGROUND_GRADIENT);<br />g2.fill(BACKGROUND);<br />java.awt.geom.Point2D INNER_BACKGROUND_START = new java.awt.geom.Point2D.Double(<br />0, 10);<br />java.awt.geom.Point2D INNER_BACKGROUND_STOP = new java.awt.geom.Point2D.Double(<br />0, getHeight() - 10);<br />final float[] INNER_BACKGROUND_FRACTIONS = { 0.0f, 1.0f };<br />final java.awt.Color[] INNER_BACKGROUND_COLORS = {<br />new java.awt.Color(0x4D5651), new java.awt.Color(0x393E3A) };<br />final java.awt.Shape INNER_BACKGROUND = new java.awt.geom.RoundRectangle2D.Double(<br />10, 10, getWidth() - 20, getHeight() - 20, 5, 5);<br />final java.awt.LinearGradientPaint INNER_BACKGROUND_GRADIENT = new java.awt.LinearGradientPaint(<br />INNER_BACKGROUND_START, INNER_BACKGROUND_STOP,<br />INNER_BACKGROUND_FRACTIONS, INNER_BACKGROUND_COLORS);<br />g2.setPaint(INNER_BACKGROUND_GRADIENT);<br />g2.fill(INNER_BACKGROUND);<br />g2.setColor(new java.awt.Color(0x2F362E));<br />g2.drawLine(10, 10, 10, getHeight() - 10);<br />g2.drawLine(getWidth() - 10, 10, getWidth() - 10, getHeight() - 10);<br />g2.drawLine(10, 10, getWidth() - 10, 10);<br />g2.setColor(new java.awt.Color(0x6B7167));<br />g2.drawLine(10, getHeight() - 10, getWidth() - 10, getHeight() - 10);<br />g2.dispose();<br />return IMAGE;<br />}<br />public void leftClick(MouseEvent e) {<br />}<br />public void middleClick(MouseEvent e) {<br />}<br />public void rightClick(MouseEvent e) {<br />}<br />public void onKey(KeyEvent e) {<br />}<br />public void onKeyUp(KeyEvent e) {<br />}<br />public static void main(String[] args) {<br />GameScene frame = new GameScene("Java版世界時鐘", 398, 391);<br />Deploy deploy = frame.getDeploy();<br />deploy.setScreen(new Main());<br />deploy.setShowFPS(true);<br />deploy.setLogo(false);<br />deploy.setFPS(100);<br />deploy.mainLoop();<br />frame.showFrame();<br />}<br />}<br />


以下為運行效果:

 

 

 

 

(源碼在jar中)

:http://loon-simple.googlecode.com/files/WorldClock.7z

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.