logo资料库

java模拟时钟.doc

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
编写一个窗口程序完成一个模拟钟表和一个数字钟表,并可以通过菜单进行切换。 设计要求: 1)界面要求有创意; 2)最好钟表在正点具有音乐报时功能; 3)钟表具有设置时间的功能; 作者:方贵深 吉林大学珠海学院 注 意 : 这 里 的 闹 钟 报 时 功 能 会 用 到 音 频 文 件 , 音 频 我 已 经 共 享 到 百 度 网 盘 : http://pan.baidu.com/share/link?shareid=316565&uk=2164473602 将文件解压到工程的根目录里即可。 import java.awt.BasicStroke; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.Toolkit; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import javax.swing.JFrame; import sun.audio.AudioPlayer; /** * * @author Administrator */ class ModifyTime { public static int[] time = new int[3]; public static boolean mark = false;
public int[] showModifyDialog(JFrame frame, boolean modal) { MyJDialog dialog = new MyJDialog(frame, true); dialog.setVisible(true); if (mark) { mark = false; return time; } return null; } private class MyJDialog extends javax.swing.JDialog { MyKeyListener myKeyListener=new MyKeyListener(); /** * Creates new form MyJDialog */ public MyJDialog(javax.swing.JFrame parent, boolean modal) { super(parent, "修改时间", modal); Container container = this.getContentPane(); initComponents(); jTextField1.addKeyListener(myKeyListener); jTextField2.addKeyListener(myKeyListener); jTextField3.addKeyListener(myKeyListener); container.addKeyListener(myKeyListener); jPanel2.addKeyListener(myKeyListener); } private class MyKeyListener extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { super.keyPressed(e); if (e.getKeyChar() == KeyEvent.VK_ENTER) { okButton.doClick(); } } } @SuppressWarnings("unchecked") // private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jSeparator1 = new javax.swing.JSeparator(); jPanel2 = new javax.swing.JPanel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); okButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jLabel1.setText("设置时间"); jSeparator1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap(27, Short.MAX_VALUE) .addComponent(jLabel1) .addGap(18, 18, 18) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(22, 22, 22) .addComponent(jLabel1) .addContainerGap()) .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING)); jTextField3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField3ActionPerformed(evt); } }); jLabel2.setText(":"); jLabel3.setText(":"); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(36, 36, 36) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) javax.swing.GroupLayout.PREFERRED_SIZE) 60, 60,
.addGap(0, 0, Short.MAX_VALUE) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE) javax.swing.GroupLayout.PREFERRED_SIZE, .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 6, 60, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(36, 36, 36))); jPanel2Layout.setVerticalGroup( jPanel2Layout.createSequentialGroup() jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, .addContainerGap(20, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELI NE) javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextField1, .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, .addComponent(jLabel2) .addComponent(jLabel3)) .addGap(19, 19, 19))); okButton.setText("确定"); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(123, 123, 123) .addComponent(okButton) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap()
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel1, .addContainerGap()) .addGroup(layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(okButton) .addGap(29, 29, 29))); pack(); }// private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: mark = true; String h = jTextField1.getText(); String m = jTextField2.getText(); String s = jTextField3.getText(); ModifyTime.time[0] = Integer.parseInt(h); ModifyTime.time[1] = Integer.parseInt(m); ModifyTime.time[2] = Integer.parseInt(s); this.dispose(); } /** * @param args the command line arguments */ /** * @param args the command line arguments */ // Variables declaration - do not modify private javax.swing.JButton okButton; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JSeparator jSeparator1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; // End of variables declaration } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JSeparator jSeparator1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; } public class Timekeeper extends javax.swing.JFrame { private Toolkit tk = getToolkit(); private boolean drawing=true; private GregorianCalendar c = null; private int radius = 120; private boolean synchronism = true; private boolean digital = false; // 定义时间变量 private int dayOfWeek; private int year; private int month; private int day; private int hours; private int minutes; private int second; SimpleDateFormat dateFormat1; SimpleDateFormat dateFormat2; Point point1 = null; // 原点 Point point2 = null; // 终点 int n = 1; int[] time = new int[3]; MyThreadDigit mtd = null; MyThreadAnalog mta = null; // 构造函数 public Timekeeper() { super("时钟"); initComponents(); dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 E"); this.setResizable(false); buttonModify.setEnabled(false); this.addWindowListener(new WindowAdapter() { public void windowIconified(WindowEvent e) { drawing=false; } public void windowDeiconified(WindowEvent e) { drawing=true;
repaint(); } }); if (digital) { mtd = new MyThreadDigit(this); mtd.start(); mta = new MyThreadAnalog(this); mta.start(); } else { } } public void playMusic(int n) { play(n); } public void play(int n) { InputStream inputStream=null; try { inputStream = new FileInputStream(new File(String.valueOf(n).trim()+".wav"));// file // 指的是音乐的路径。 AudioPlayer.player.start(inputStream); Thread.sleep(15000); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { } } if(inputStream!=null) inputStream.close(); } catch (Exception e2) { // TODO: handle exception
} // 新建一个数字时钟线程 private class MyThreadDigit extends Thread { private JFrame jFrame; public MyThreadDigit(JFrame jFrame) { this.jFrame = jFrame; } public void run() { try { for (;;) { timeWork(); if (synchronism) { String string = dateFormat1.format(c.getTime()); String[] strs = string.split(" "); label_date.setText(strs[0]); label_time.setText(strs[1]); } Thread.sleep(1000); } } catch (Exception e) { } } } // 新建一个模拟时钟线程 private class MyThreadAnalog extends Thread { private JFrame jFrame; public MyThreadAnalog(JFrame jFrame) { this.jFrame = jFrame; } public void run() {
分享到:
收藏