19.09.2015 Views

Prentice.Hall.Introduction.to.Java.Programming,.Brief.Version.9th.(2014).[sharethefiles.com]

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

13.9 Case Study: The StillClock Class 503<br />

34 public int getMinute() {<br />

35 return minute;<br />

36 }<br />

37<br />

38 /** Set a new minute */<br />

39 public void setMinute(int minute) {<br />

40 this.minute = minute;<br />

41 repaint();<br />

42 }<br />

43<br />

44 /** Return second */<br />

45 public int getSecond() {<br />

46 return second;<br />

47 }<br />

48<br />

49 /** Set a new second */<br />

50 public void setSecond(int second) {<br />

51 this.second = second;<br />

52 repaint();<br />

53 }<br />

54<br />

55 @Override /** Draw the clock */<br />

56 protected void paintComponent(Graphics g) {<br />

57 super.paintComponent(g);<br />

58<br />

59 // Initialize clock parameters<br />

60 int clockRadius =<br />

61 (int)(Math.min(getWidth(), getHeight()) * 0.8 * 0.5);<br />

62 int xCenter = getWidth() / 2;<br />

63 int yCenter = getHeight() / 2;<br />

64<br />

65 // Draw circle<br />

66 g.setColor(Color.BLACK);<br />

67 g.drawOval(xCenter - clockRadius, yCenter - clockRadius,<br />

68 2 * clockRadius, 2 * clockRadius);<br />

69 g.drawString("12", xCenter - 5, yCenter - clockRadius + 12);<br />

70 g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);<br />

71 g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);<br />

72 g.drawString("6", xCenter - 3, yCenter + clockRadius - 3);<br />

73<br />

74 // Draw second hand<br />

75 int sLength = (int)(clockRadius * 0.8);<br />

76 int xSecond = (int)(xCenter + sLength *<br />

77 Math.sin(second * (2 * Math.PI / 60)));<br />

78 int ySecond = (int)(yCenter - sLength *<br />

79 Math.cos(second * (2 * Math.PI / 60)));<br />

80 g.setColor(Color.red);<br />

81 g.drawLine(xCenter, yCenter, xSecond, ySecond);<br />

82<br />

83 // Draw minute hand<br />

84 int mLength = (int)(clockRadius * 0.65);<br />

85 int xMinute = (int)(xCenter + mLength *<br />

86 Math.sin(minute * (2 * Math.PI / 60)));<br />

87 int yMinute = (int)(yCenter - mLength *<br />

88 Math.cos(minute * (2 * Math.PI / 60)));<br />

89 g.setColor(Color.blue);<br />

90 g.drawLine(xCenter, yCenter, xMinute, yMinute);<br />

91<br />

92 // Draw hour hand<br />

93 int hLength = (int)(clockRadius * 0.5);<br />

repaint panel<br />

repaint panel<br />

override paintComponent

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!