Changeset 30680

Show
Ignore:
Timestamp:
03/02/09 06:46:44 (4 years ago)
Author:
cactusman
Message:

リファクタリング

Location:
lang/java/lt_timer/src/main/java/java_ja
Files:
1 added
1 modified

Legend:

Unmodified
Added
Removed
  • lang/java/lt_timer/src/main/java/java_ja/LTStopWatch.java

    r30679 r30680  
    11package java_ja; 
    22 
    3 import static java_ja.Util.CHAR_MAP; 
    43import static java_ja.Util.RADIAN; 
    54 
     
    1211import java.awt.GridLayout; 
    1312import java.awt.Image; 
    14 import java.awt.Polygon; 
    1513import java.awt.event.ActionEvent; 
    1614import java.awt.event.ActionListener; 
    1715import java.io.IOException; 
    1816import java.text.SimpleDateFormat; 
    19 import java.util.ArrayList; 
    20 import java.util.List; 
    2117 
    2218import javax.imageio.ImageIO; 
     
    302298                        return new int[] { x, y }; 
    303299                } 
    304  
    305                 /** 
    306                  * デジタル風番号。 
    307                  * 
    308                  * @author imai78 
    309                  * 
    310                  */ 
    311                 class DigitalNumber { 
    312                         /** 
    313                          * デジタル時計のセグメント集。 
    314                          */ 
    315                         List<Hexagon> segments; 
    316  
    317                         /** 
    318                          * コンストラクタ。 
    319                          * 
    320                          * @param number 
    321                          * @param x 
    322                          * @param y 
    323                          * @param w 
    324                          */ 
    325                         public DigitalNumber(int number, int x, int y, int w) { 
    326                                 int space = w / 10; 
    327                                 // 線(セグメント)の長さ。 
    328                                 int barWidth = w / 6; 
    329                                 // 線(セグメント)の太さ。 
    330                                 int barHeight = w - barWidth - space; 
    331  
    332                                 // 横線のX座標。 
    333                                 int alignX = x + space; 
    334                                 // 縦線(左側)のX座標。 
    335                                 int valignLeftX = x; 
    336                                 // 縦線(右側)のX座標。 
    337                                 int valignRightX = x + w - barWidth - (int) (space * 0.9); 
    338  
    339                                 // 横線(上段)のY座標。 
    340                                 int alignTopY = y; 
    341                                 // 横線(中段)のY座標。 
    342                                 int alignMiddleY = y + barHeight + space / 2; 
    343                                 // 横線(下段)のY座標。 
    344                                 int alignBottomY = y + space + barHeight * 2; 
    345                                 // 縦線(上段)のY座標。 
    346                                 int valignTopY = y + space; 
    347                                 // 縦線(下段)のY座標。 
    348                                 int valignUnderY = valignTopY + barHeight 
    349                                 + (int) (space * 0.75); 
    350  
    351                                 segments = new ArrayList<Hexagon>(); 
    352                                 int[] map = CHAR_MAP[number]; 
    353                                 // 縦置きのセグメント。 
    354                                 if (map[0] == 1) 
    355                                         segments.add(new Hexagon(valignLeftX, valignTopY, 
    356                                                         barWidth, barHeight)); 
    357                                 if (map[1] == 1) 
    358                                         segments.add(new Hexagon(valignLeftX, valignUnderY, 
    359                                                         barWidth, barHeight)); 
    360                                 if (map[2] == 1) 
    361                                         segments.add(new Hexagon(valignRightX, valignTopY, 
    362                                                         barWidth, barHeight)); 
    363                                 if (map[3] == 1) 
    364                                         segments.add(new Hexagon(valignRightX, valignUnderY, 
    365                                                         barWidth, barHeight)); 
    366                                 // 横置きのセグメント。 
    367                                 if (map[4] == 1) 
    368                                         segments.add(new Hexagon(alignX, alignTopY, barHeight, 
    369                                                         barWidth)); 
    370                                 if (map[5] == 1) 
    371                                         segments.add(new Hexagon(alignX, alignMiddleY, 
    372                                                         barHeight, barWidth)); 
    373                                 if (map[6] == 1) 
    374                                         segments.add(new Hexagon(alignX, alignBottomY, 
    375                                                         barHeight, barWidth)); 
    376                         } 
    377  
    378                         /** 
    379                          * 描画する。 
    380                          * 
    381                          * @param g 
    382                          */ 
    383                         void fill(Graphics g) { 
    384                                 for (Hexagon segment : segments) { 
    385                                         g.fillPolygon(segment); 
    386                                 } 
    387                         } 
    388  
    389                         /** 
    390                          * 六角形のクラス。 
    391                          * 
    392                          * @author imai78 
    393                          * 
    394                          */ 
    395                         class Hexagon extends Polygon { 
    396                                 /** 
    397                                  * コンストラクタ。 
    398                                  * 
    399                                  * @param x 
    400                                  * @param y 
    401                                  * @param w 
    402                                  * @param h 
    403                                  */ 
    404                                 public Hexagon(int x, int y, int w, int h) { 
    405                                         if (w >= h) { 
    406                                                 // 横置きの六角形。 
    407                                                 int pointPoint = h / 2; 
    408                                                 int pointHeight = (int) (w * 0.2); 
    409                                                 addPoint(x + pointHeight, y); 
    410                                                 addPoint(x + w - pointHeight, y); 
    411                                                 addPoint(x + w, y + pointPoint); 
    412                                                 addPoint(x + w - pointHeight, y + h); 
    413                                                 addPoint(x + pointHeight, y + h); 
    414                                                 addPoint(x, y + pointPoint); 
    415                                         } else { 
    416                                                 // 縦置きの六角形。 
    417                                                 int pointPoint = w / 2; 
    418                                                 int pointHeight = (int) (h * 0.2); 
    419                                                 addPoint(x + pointPoint, y); 
    420                                                 addPoint(x + w, y + pointHeight); 
    421                                                 addPoint(x + w, y + h - pointHeight); 
    422                                                 addPoint(x + pointPoint, y + h); 
    423                                                 addPoint(x, y + h - pointHeight); 
    424                                                 addPoint(x, y + pointHeight); 
    425                                         } 
    426                                 } 
    427                         } 
    428                 } 
    429300        } 
    430301 
     
    502373                } 
    503374        } 
    504          
     375 
    505376        /** 
    506377         * エントリ・ポイント。