code: @Override
      public void actionPerformed(java.awt.event.ActionEvent event) {
          if (event.getSource().equals(CLOCK_TIMER)) {
              // Seconds
              secondPointerAngle = java.util.Calendar.getInstance().get(java.util.Calendar.SECOND) * ANGLE_STEP + java.util.Calendar.getInstance().get(java.util.Calendar.MILLISECOND) * ANGLE_STEP / 1000;
  
              // Hours
              hour = java.util.Calendar.getInstance().get(java.util.Calendar.HOUR) - this.timeZoneOffsetHour;
              if (hour > 12) {
                  hour -= 12;
              }
              if (hour < 0) {
                  hour += 12;
              }
  
              // Minutes
              minute = java.util.Calendar.getInstance().get(java.util.Calendar.MINUTE) + this.timeZoneOffsetMinute;
              if (minute > 60) {
                  minute -= 60;
                  hour++;
              }
              if (minute < 0) {
                  minute += 60;
                  hour--;
              }
  
              // Calculate angles from current hour and minute values
              hourPointerAngle = hour * ANGLE_STEP * 5 + (0.5) * minute;
              minutePointerAngle = minute * ANGLE_STEP;
  
              repaint(getInnerBounds());
          }
      }
docs: <editor-fold defaultstate="collapsed" desc="ActionListener">