자바 시계 효과 구현

7961 단어 자바클 록
본 논문 의 사례 는 자바 가 시계 효 과 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
구현 효 과 는 그림:

Java 코드:
파일 1:ClockPanel.java

import static java.util.Calendar.HOUR;
import static java.util.Calendar.MILLISECOND;
import static java.util.Calendar.MINUTE;
import static java.util.Calendar.SECOND;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Calendar;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 *     
 * 
 * @author       
 */
@SuppressWarnings("serial")
public class ClockPanel extends JPanel {
 // 3      
 private static final BasicStroke HOURS_POINT_WIDTH = new BasicStroke(4);
 private static final BasicStroke MINUETES_POINT_WIDTH = new BasicStroke(3);
 private static final BasicStroke SEC_POINT_WIDTH = new BasicStroke(2);
 ImageIcon background;//       
 private int centerX;//     
 private int centerY;//     
 private final static int secLen = 60; //     
 private final static int minuesLen = 55; //     
 private final static int hoursLen = 36; //     
 
 /**
 *     
 */
 public ClockPanel() {
 setToolTipText("   +、-     ,Crtl+Shift+X  ");//     
 setOpaque(false);
 
 background = new ImageIcon(getClass().getResource("clock.jpg"));//     
 int iconWidth = background.getIconWidth();//       
 centerX = iconWidth / 2;//         
 int iconHeight = background.getIconHeight();
 centerY = iconHeight / 2;//         
 setPreferredSize(new Dimension(iconWidth, iconHeight));
 }
 
 @Override
 public void paint(Graphics g) {//       
 Graphics2D g2 = (Graphics2D) g;
 g2.drawImage(background.getImage(), 0, 0, this);//       
 Calendar calendar = Calendar.getInstance();//       
 int millisecond = calendar.get(MILLISECOND);//      
 int sec = calendar.get(SECOND);//     
 int minutes = calendar.get(MINUTE);//     
 int hours = calendar.get(HOUR);//     
 double secAngle = (60 - sec) * 6 - (millisecond / 150); //     
 int minutesAngle = (60 - minutes) * 6;//     
 int hoursAngle = (12 - hours) * 360 / 12 - (minutes / 2);//     
 //     、  、       
 int secX = (int) (secLen * Math.sin(Math.toRadians(secAngle)));//       X  
 int secY = (int) (secLen * Math.cos(Math.toRadians(secAngle))); //       Y  
 int minutesX = (int) (minuesLen * Math
 .sin(Math.toRadians(minutesAngle))); //       X  
 int minutesY = (int) (minuesLen * Math
 .cos(Math.toRadians(minutesAngle))); //       Y  
 int hoursX = (int) (hoursLen * Math.sin(Math.toRadians(hoursAngle))); //       X  
 int hoursY = (int) (hoursLen * Math.cos(Math.toRadians(hoursAngle))); //       Y  
 //       、  、  
 g2.setStroke(HOURS_POINT_WIDTH);//        
 g2.setColor(Color.BLACK);//        
 g2.drawLine(centerX, centerY, centerX - hoursX, centerY - hoursY);//     
 g2.setStroke(MINUETES_POINT_WIDTH);//        
 if (minutesAngle != hoursAngle) //   、      
 g2.setColor(new Color(0x2F2F2F));//          
 else {
 g2.setColor(Color.GREEN);//         
 }
 g2.drawLine(centerX, centerY, centerX - minutesX, centerY - minutesY);//     
 g2.setStroke(SEC_POINT_WIDTH);//        
 if (secAngle != hoursAngle && secAngle != minutesAngle)//   、  、      
 g2.setColor(Color.ORANGE);//          
 else {
 g2.setColor(Color.GREEN);//         
 }
 //   3          
 g2.fillOval(centerX - 5, centerY - 5, 10, 10);//      
 g2.drawLine(centerX, centerY, centerX - secX, centerY - secY);//     
 g2.drawLine(centerX + 1, centerY + 1, centerX - secX + 1, centerY
 - secY + 1);//     
 }
}
파일 2:ClockFrame.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * @author    
 */
@SuppressWarnings("serial")
public class ClockFrame extends JDialog {
 private float opqua = 0.7f;
 private ClockPanel clockPanel;
 private Point fp; //            
 
 public static void main(String args[]) {
 EventQueue.invokeLater(new Runnable() {
  public void run() {
  try {
   ClockFrame frame = new ClockFrame();//       
   frame.setVisible(true);//     
  } catch (Exception e) {
   e.printStackTrace();
  }
  }
 });
 }
 
 /**
 *          
 */
 public ClockFrame() {
 super();
 setUndecorated(true);//       
 setAlwaysOnTop(true);//     
 setTitle("   ");//       
 getContentPane().setLayout(new BorderLayout());
 setBounds(100, 30, 217, 257);
 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
 clockPanel = new ClockPanel();//       
 getContentPane().add(clockPanel);
 //                 
 clockPanel.addMouseListener(new MouseAdapter() {
  public void mousePressed(final MouseEvent e) {
  fp = e.getPoint();
  if (e.getButton()==MouseEvent.BUTTON3){
   System.exit(0);//     
  }
  }
 });
 //                  
 clockPanel.addMouseMotionListener(new MouseMotionAdapter() {
  public void mouseDragged(final MouseEvent e) {
  JDialog frame = (JDialog) getRootPane().getParent();
  Point point = e.getLocationOnScreen();
  frame.setLocation(point.x - fp.x, point.y - fp.y);
  }
 });
 pack();
 
 addKeyListener(new KeyAdapter() {//             
  public void keyPressed(final KeyEvent e) {
  int code = e.getKeyCode();
  switch (code) {//       
   case KeyEvent.VK_ADD:// +          
   opqua += 0.05;
   opqua = opqua > 0.95f ? 1f : opqua;
   break;
   case KeyEvent.VK_SUBTRACT:// -          
   opqua -= 0.05;
   opqua = opqua < 0.1f ? 0.1f : opqua;
   break;
  }
  //    Ctrl+Shift+XM I,     
  if (code == KeyEvent.VK_X
   && e.getModifiersEx() == (KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK))
   System.exit(0);
  }
 });
 
 Dimension screenSize = getToolkit().getScreenSize();
 double width = screenSize.getWidth();
 int x = (int) (width - getWidth() - 30);
 setLocation(x, 30);
 
 new Thread() {//       ,        
  @Override
  public void run() {
  try {
   while (true) {
   sleep(1000);//   1 
   clockPanel.repaint();//           
   }
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  }
 }.start();
 }
}
자바 파일 두 개가 이 루어 졌 습 니 다!다음은 실현 절 차 를 설명 하 겠 습 니 다.
1.위의 코드 를 할당 하고 메모 장 에 붙 여 저장 합 니 다.두 파일 은 같은 파일 에 넣 고 파일 접 두 사 를 자바 로 바 꿉 니 다.
2.자바 환경 설정 은 JDK 를 다운로드 하 는 것 입 니 다.이 절 차 를 모 르 는 자체 바 이 두 입 니 다.
추천 읽 기:
그림 과 글 은 자바 환경 변수 설정 방법 을 상세 하 게 설명 한다.
자바 초보 환경 구축 JDK 8 설치 설정 튜 토리 얼
3.cmd 는 컴 파일 명령 javac 를 실행 합 니 다(주의:ClockFrame.java 파일 만 컴 파일 합 니 다.ClockPanel.java 는 컴 파일 하지 않 습 니 다.ClockFrame.java 파일 을 컴 파일 할 때 도 ClockPanel.java 파일 을 컴 파일 하기 때 문 입 니 다)

4.자바 명령 실행(그림 참조)

이 실현 기능 은 이것으로 끝났다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기