📄 jframe.java
字号:
private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox2ActionPerformed // TODO 将在此处增加您的处理代码: }//GEN-LAST:event_jComboBox2ActionPerformed private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed // TODO 将在此处增加您的处理代码: }//GEN-LAST:event_jComboBox1ActionPerformed private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBox1ItemStateChanged month=jComboBox1.getSelectedIndex()+1;//System.out.print(moh);changedate(); // TODO 将在此处增加您的处理代码: }//GEN-LAST:event_jComboBox1ItemStateChanged private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinner1StateChanged year=new Integer(jSpinner1.getValue().toString()).intValue(); if (year>2099 || year<1980) year=1980; jSpinner1.setValue(new Integer(year)); changedate(); // TODO 将在此处增加您的处理代码: }//GEN-LAST:event_jSpinner1StateChanged void changedate() { int total,week,i,day1=1,n=0,l=1,temp=0,j,k;boolean leap=false; leap = (year%400==0)| (year%100!=0) & (year%4==0); week =1; //起始日 1979-12-31 is Monday total = year-1980+(year-1980+3)/4; //求平(闰)年累计的总天数 for (i=1;i<=month-1;i++) //当年的累计天数 switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: total=total+31; break; case 4: case 6: case 9: case 11: total=total+30; break; case 2: if (leap) total=total+29; else total=total+28; break; } switch (month)//本月天数 { case 1: case 3: case 5: case 7: case 8: case 10: case 12: n=n+31; break; case 4: case 6: case 9: case 11: n=n+30; break; case 2: if (leap) n=n+29; else n=n+28; break; } total = total+day1; //当月的天数 week = (week+total) % 7; //求得星期几 Object datetime[][]=new Object [][] { {null,null,null,null,null, null,null}, {null, null,null, null, null, null,null}, {null, null, null, null, null, null, null}, {null, null, null, null, null, null, null}, {null, null, null, null, null, null, null}, {null, null, null, null, null, null, null}, {null, null, null,null, null,null, null} }; for(j=0;j<7;j++) for(k=0;k<7;k++) { if(k==week) temp=1; //System.out.print(n); if(n+1==l) { temp=0; } if(temp==1) { datetime[j][k]=new Integer(l); l++; } }jTable1.setModel(new javax.swing.table.DefaultTableModel( datetime, new String [] { "标题 1", "标题 2", "标题 3", "标题 4", "标题 5", "标题 6", "标题 7" } ) ); String ss; jTable1.clearSelection(); for(int ii=0;ii<=5;ii++) for(int jj=0;jj<=6;jj++){ if(jTable1.getValueAt(ii,jj)==null) { ss="0"; } else { ss=jTable1.getValueAt(ii,jj).toString(); } int o=new Integer(ss).intValue(); if(new Date().getDate()==o) jTable1.changeSelection(ii,jj,true,false); } } /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm public static void main(String args[]) { JFrame a= new JFrame(); a.show(); shizhong=a.new xiancheng(); shizhong.start(); } // 变量声明 - 不进行修改//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JComboBox jComboBox1; private javax.swing.JComboBox jComboBox2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JSpinner jSpinner1; private javax.swing.JSpinner jSpinner2; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTable jTable1; private javax.swing.JTable jTable2; // 变量声明结束//GEN-END:variables public GregorianCalendar getTime(String zone){ TimeZone currentTime; currentTime=TimeZone.getTimeZone(zone); TimeZone.setDefault(currentTime); GregorianCalendar cal = new GregorianCalendar(); return cal; } class clock extends Canvas{ int lastxs=0,lastys=0,lastxm=0,lastym=0,lastxh=0,lastyh=0; public void paint(Graphics g) //显示数字和图形时钟 { int xh, yh, xm, ym, xs, ys, s, m, h, xcenter, ycenter; Date rightnow = new Date(); //获取当前日期和时间 String today = rightnow.toLocaleString(); //时间对应的字符串 s = rightnow.getSeconds(); m = rightnow.getMinutes(); h = rightnow.getHours(); xcenter=85; //图形钟的原点 ycenter=65; //以下计算秒针、分针、时针位置 xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter); ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter); xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter); ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter); xh = (int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*30+xcenter); yh = (int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*30+ycenter); g.setFont(new Font("TimesRoman", Font.PLAIN, 14)); g.setColor(Color.blue); g.drawArc(xcenter-50,ycenter-50,100,100,0,360); //画圆和数字 g.setColor(Color.darkGray); g.drawString("9",xcenter-45,ycenter+6); g.drawString("3",xcenter+40,ycenter+6); g.drawString("12",xcenter-7,ycenter-37); g.drawString("6",xcenter-3,ycenter+45); g.drawLine((int)(Math.cos(50 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(50 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(50 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(50 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(55 * 3.14f/30 - 3.14f/2) * 35 + xcenter),(int)(Math.sin(55 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(55 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(55 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(40 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(40 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(40 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(40 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(35 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(35 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(35 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(35 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(25 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(25 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(25 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(25 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(20 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(20 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(20 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(20 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(10 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(10 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(10 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(10 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); g.drawLine((int)(Math.cos(5 * 3.14f/30 - 3.14f/2) * 35 + xcenter), (int)(Math.sin(5 * 3.14f/30 - 3.14f/2) * 35 + ycenter), (int)(Math.cos(5 * 3.14f/30 - 3.14f/2) * 45 + xcenter), (int)(Math.sin(5 * 3.14f/30 - 3.14f/2) * 45 + ycenter)); //时间变化时,需要重新画各个指针,即先消除原有指针,然后画新指针 g.setColor(getBackground()); //用背景色画线,可以消除原来画的线 if (xs != lastxs || ys != lastys) //秒针变化 { g.drawLine(xcenter, ycenter, lastxs, lastys); g.drawString(today, 5, 150); //消除数字时钟 } if (xm != lastxm || ym != lastym) //分针变化 { g.drawLine(xcenter, ycenter-1, lastxm, lastym); g.drawLine(xcenter-1, ycenter, lastxm, lastym); } if (xh != lastxh || yh != lastyh) //时针变化 { g.drawLine(xcenter, ycenter-1, lastxh, lastyh); g.drawLine(xcenter-1, ycenter, lastxh, lastyh); } // g.stColor(Color.darkGray); //显示数字时钟 g.drawString(today, 5, 150); g.setColor(Color.blue); //画新指针 g.drawLine(xcenter, ycenter, xs, ys); g.drawLine(xcenter, ycenter-1, xm, ym); g.drawLine(xcenter-1, ycenter, xm, ym); g.drawLine(xcenter, ycenter-1, xh, yh); g.drawLine(xcenter-1, ycenter, xh, yh); lastxs=xs; lastys=ys; //保存指针位置 lastxm=xm; lastym=ym; lastxh=xh; lastyh=yh; } } class xiancheng implements Runnable { Thread timer=null; Date rightnow; //int lastxs=0,lastys=0,lastxm=0,lastym=0,lastxh=0,lastyh=0; public void start() { if(timer==null) { timer=new Thread(this); timer.start(); } } public void stop() { timer=null; } public void run() //每隔一秒钟,刷新一次画面 { while (timer!= null) { try { Thread.sleep(1000); } catch (InterruptedException e) {} // jSpinner2.setModel(new javax.swing.SpinnerDateModel()); clockimage.repaint(); jSpinner2.setEditor(new JSpinner.DateEditor(jSpinner2,"a HH:mm:ss")); jSpinner2.setValue(new Date()); clockimage.repaint(); //调用paint()方法重画时钟 } timer = null; } } public void update(Graphics g) { paint(g); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -