1. 概要
 
  
2. DrawMenuクラス
戻る=>page top 
public class DrawMenu 
画面に表示するメニュー (ボタン、コンボボックス、メニュー等)は全てこのクラスで作成する。 
・JTabbedPaneの各Tabに貼り付けるHomeTabPanel、ShapeTabPanel、HelpTabPanelを作成。 
このパネルにはメニューグループを作成して張り付ける。 
・各メニューグループはcreateXXXGroupメソッドで作成する。 
createXXXGroupメソッドでは、ボタン、ComboBoxなど様々なメニューをstaticメソッドで作成する。 
 
  
    
      | 
       メソッド 
       | 
      
       説明 
       | 
     
    
      | 
				
				createHomeTabPanel
       | 
      
       public JPanel createHomeTabPanel() 
      Homeタブに貼り付けるメニューグループを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createShapeTabPanel 
       | 
      
       public JPanel createShapeTabPanel() 
      Shapeタブに貼り付けるメニューグループを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createHelpTabPanel 
       | 
      
       public JPanel createHelpTabPanel() 
      Helpタブに貼り付けるメニューグループを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createFileGroup 
       | 
      
       public  JPanel createFileGroup() 
      ファイル操作関係のメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createPageGroup 
       | 
      
       public JPanel createPageGroup() 
      ページ操作関係のメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createEditGroup 
       | 
      
       public JPanel createEditGroup() 
      編集(cut, copy&paste)操作関係のメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createShapeGroup 
       | 
      
       public JPanel createShapeGroup() 
      図形作成関係のメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createShapeStyleGroup 
       | 
      
       public JPanel createShapeStyleGroup() 
      図形の表示属性関係のメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
       createShapeLayoutGroup 
       | 
      
       public JPanel createShapeLayoutGroup() 
      図形の配置関係のメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
				createFontStyleGroup
       | 
      
       public JPanel createFontStyleGroup() 
      フォントメニューを作成し、JPanelに貼り付けて返す。 
       | 
     
    
      | 
				
				createDebugTestGroup
       | 
      
				public JPanel createDebugTestGroup() 
				デバッグツール関係メニューを作成し、JPanelに貼り付けて返す。
       | 
     
  
 
  
3. MenuConstantsクラス
戻る=>page top 
メニュー設定に使う定数を定義する。 
 
  
    
      | 
       フィールド 
       | 
      
       説明 
       | 
     
    
      | 
       imageWidth, imageHeight 
       | 
      
       public final static int imageWidth=20, imageHeight=20; 
      ボタン等に貼り付ける画像のサイズ。 
       | 
     
    
      | 
       menuItemImageWidth, 
      menuItemImageHeight 
       | 
      
       public final static int menuItemImageWidth=64, menuItemImageHeight=10; 
      メニューアイテムに貼り付ける画像のサイズ。 
       | 
     
    
      | 
       buttonWidth, buttonHeight 
       | 
      
       public final static int buttonWidth=22, buttonHeight=22; 
      ボタンのサイズ。 
       | 
     
    
      | 
       guidancePanelRectangle 
       | 
      
       public final static Rectangle guidancePanelRectangle=new Rectangle(160,
      0, 1200, 22) 
      コマンドガイダンスを表示するパネル(GuidancePanel)のサイズ。 
       | 
     
    
      | 
       DefaultFont 
       | 
      
       public final static Font DefaultFont=new Font(Font.DIALOG, Font.PLAIN,
      12); 
      ラベル等に表示する際のデフォールトフォント。 
       | 
     
    
      | 
       menuFont 
       | 
      
       public final static Font menuFont=new Font(Font.DIALOG, Font.BOLD, 12); 
      メニューボタン等に表示するフォント。 
       | 
     
    
      | 
       menuItemFont 
       | 
      
       public final static Font menuItemFont=new Font(Font.DIALOG, Font.BOLD,
      11); 
      メニューアイテムに表示するフォント。 
       | 
     
  
 
  
4. MenuUtilクラス
戻る=>page top 
メニューコンポーネント(ボタン、コンボボックス、プルダウンメニュー等)の一覧を管理 
 
 
  
    
      | 
       メソッド 
       | 
      
       説明 
       | 
     
    
      | 
       setMenuComponent 
       | 
      
       public void setMenuComponent(Component component) 
      メニューコンポーネント(ボタン、コンボボックス、プルダウンメニュー等)をMenuComponentListに登録する。 
       | 
     
    
      | 
       removeMenuComponent 
       | 
      
       public void removeMenuComponent(Component component) 
      メニューコンポーネント(ボタン、コンボボックス、プルダウンメニュー等)をMenuComponentListから削除する。 
       | 
     
    
      | 
       getMenuComponent 
       | 
      
       public Component getMenuComponent(String name) 
      コンポーネント名を指定してメニューコンポーネントを取り出す。大文字/小文字の区別、"_"によるテキストの区切りは無視する。複数存在するときは、最初のメニューコンポーネントを返す。 
      次のgetMenuComponentsメソッドを使う。 
       | 
     
    
      | 
       getMenuComponents 
       | 
      
       public Component[] getMenuComponents(String name) 
      コンポーネント名を指定してメニューコンポーネントを取り出す。大文字/小文字の区別、"_"によるテキストの区切りは無視する。メニューコンポーネントが複数存在するときは全てを返す。. 
       | 
     
    
      | getChildComponent | 
      public Component getChildComponent(Container parent, String name, String
      simpleClassName) 
      引数: 
      parent - Containerオブジェクト 
      name - 取り出すコンポーネント名. 
      simpleClassName -  取り出すコンポーネントの単純クラス名。単純クラス名は例えば"JComponent", "JMenuItem", "JCheckBoxMenuItem" など。 
      戻り値: 
      parent の下位に位置するコンポーネントで名前とクラス名が引数に一致するものを返す。複数存在するときは最初のコンポーネントを返す。 
      処理: 
      次のgetChildComponents メソッドを使う。 
       | 
     
    
      | getChildComponents | 
      private Component[] getChildComponents(Container parent, String name, String
      simpleClassName) 
      引数: 
      parent - Containerオブジェクト 
      name - 取り出すコンポーネント名. 
      simpleClassName -  取り出すコンポーネントの単純クラス名。単純クラス名は例えば"JComponent", "JMenuItem", "JCheckBoxMenuItem" など。戻り値: 
      parent の下位に位置するコンポーネントで名前とクラス名が引数に一致するものを全て返す。存在しないときは長さ0の配列を返す。 
      処理: 
      次のgetComponents メソッドを使う。 
       | 
     
    
      | getComponents | 
      private void getComponents(Container container, Vector vector) 
      Parameters: 
      container - Containerオブジェクト 
      vector - containerの下位に位置するコンポーネントを格納する。 
      Processing: 
      もしcontainerがJMenu (javax.swing.JMenu)オブジェクトならば jMenu.getMenuComponentsメソッドで子コンポーネントを取得する。そうでなければContainer.getComponentsメソッドで取得する。 
      子コンポーネントが見つかればこのメソッドを再帰的に呼んで、さらにその子コンポーネントを探す。 
       | 
     
    
      | 
       resetSelectedMenu 
      Components 
       | 
      
       public void resetSelectedMenuComponents() 
      MenuComponentList に登録されているメニューコンポーネントのうちフォントメニューコンポーネントを除外し、全てを非選択状態にする。ボタンなどをクリックすると外観が選択状態に変わる。これを解除するために使う。 
       | 
     
    
      | printMenuComponent | 
      public void printMenuComponent(Container parent) 
      parentとその下位コンポーネントを全てプリントする。 | 
     
  
 
  
6. GuidancePanelクラス 
戻る=>page top 
public class GuidancePanel extends JPanel 
  
ガイダンスパネルは、GlassPaneを利用してTabbedPaneのタブの横に表示する。
	GlassPaneにガイダンスパネルを設定し、ガイダンスパネルの位置とサイズはsetBoundsメソッドで決める。 
 
  
    
      | 
       フィールド 
       | 
      
       説明 
       | 
     
    
      | 
       glassPane 
       | 
      
       static JPanel glassPane=ObjectTable.getGlassPane("MessageField") 
      ガイダンスパネル(このクラスのオブジェクト)を設定するglassPaneオブジェクト。 
      glassPaneはDrawMain(メインクラス)で取得する。 
       | 
     
    
      | 
       viewLabel 
       | 
      
       static JLabel viewLabel=new JLabel() 
      上図参照 
       | 
     
    
      | 
       guidanceLabel 
       | 
      
       static JLabel guidanceLabel=new JLabel() 
      上図参照 
       | 
     
    
      | 
       guidancePanelBounds 
       | 
      
       final static Rectangle guidancePanelBounds=new Rectangle(160, 0, 1200,
      22) 
      ガイダンスパネル(このクラスのオブジェクト)のglassPane上での位置、サイズを定めるRectangleオブジェクト。 
       | 
     
  
 
 
  
    
      | 
       メソッド 
       | 
      
       説明 
       | 
     
    
      | 
       コンストラクタ 
       | 
      
       public GuidancePanel() 
      basePanel(JPanel)を作成し、FlowLayoutを設定。これにviewLabelとguidanceLabelをbasePanelに加える。 
      basePanelをGuidancePanelオブジェクトに加え、さらにGuidancePanelオブジェクトをglassPaneに加える。 
      最後にglassPaneにsetVisible(true)を設定して表示する。 
       | 
     
    
      | 
       showViewMessage 
       | 
      
       public static void showViewMessage(String message) 
      viewLabelにメッセージを表示する。 
       | 
     
    
      | 
       showSettingsMessage 
       | 
      
       public static void showSettingsMessage(String message) 
      guidanceLabelにメッセージを表示する。 
       | 
     
  
 
  
7. StatusPanelクラス  
戻る=>page top 
public class StatusPanel extends JPanel 
 
  
 
  
 
画面の下側に表示するパネル。 
現在はMousePositionLSのdisplayMousePositionメソッドでマウスの位置情報を表示するためと、TextBoxのdisplayMousePositionメソッドでテキストの選択状況などを表示するために使っている。 
パネルの上下2段にJLabelを貼り付け、ここにテキストを表示する。
	現在のところ上段のLabelはMousePositionLSが、下段のLabelはTextBoxが使う。
	なおLabelに表示するテキストがnullのときLabelは表示されない。 
 
  
    
      | 
       メソッド 
       | 
      
       説明 
       | 
     
    
      | 
       コンストラクタ 
       | 
      
       public StatusPanel() 
      縦方向のBoxオブジェクトを作成してこのパネルに貼り付ける。 
      JLabelを2個作成してBoxオブジェクトに設定する。 
       | 
     
    
      | 
       createLabel 
       | 
      
       public JLabel createLabel() 
      テキスト表示用のJLabelを作成する。 
       | 
     
    
      | 
       showText 
       | 
      
       public void showText(int i, String text) 
      i=0の時は上段のJlabelに、i=1の時は下段のJlabelにtextを設定する。 
       | 
     
  
 
  
8. DrawImageIconクラス
戻る=>page top 
public class DrawImageIcon 
・ボタン等に貼り付ける画像をファイルから取得する。 
画像を格納したファイルは実行コードのあるディレクトリ直下のimagesファイルに格納されている。 
・取りだした画像を指定サイズになるように変換し、ImageIconオブジェクトを返す。 
 
  
    
      | 
       メソッド 
       | 
      
       説明 
       | 
     
    
      | 
       get 
       | 
      
       public static ImageIcon get(String imageName, int width, int height) 
      引数: 
      imageName - 画像名 
      width - 取り出す画像の幅 
      height - 取り出す画像の高さ 
      処理:  
      次のgetImageメソッドで画像をBufferedImageに書き込み、getScaledInstanceメソッドで指定サイズの画像を得る。 
      この画像を引数としてImageIconオブジェクトを作成し、戻り値として返す。 
       | 
     
    
      | 
       getImage 
       | 
      
       protected static BufferedImage getImage(String imageName) 
      引数: 
      imageName - 画像名 
      処理:   
      取り出す画像のファイルパスはつぎのように作成する。 
         File file = new File(""); 
         String currentPath=file.getAbsolutePath(); 
         String filePath=currentPath+ "/images/"+imageName; 
       | 
     
  
 
      
 |