Java Drawing DrawTop

Language

JP  US  UK

 

メニュー

 H. Jyounishi, Tokyo Japan
 

Frame (Index), No frame                 version:0.3(latest)  

要旨:画面上部のツールバーにボタン、コンボボックス、プルダウンメニューなどを設定する。その他、画面上部にコマンドのガイダンスを出す領域、画面下部にマウスがヒットしている図形の情報を表示するパネルを作成する。

Nこのページで説明するクラス: DrawMenu, MenuConstants, MenuUtil, GuidancePanel, StatusPanel, DrawImangeIcon

1. 概要

機能

説明

ツールバーのメニュー作成

ツールバーに配置するメニューコンポーネントをDrawMenuクラスで作成する。

メニューコンポーネントの検索

コンポーネントをMenuUtil.setMenuComponentでMenuUtilのArrayListに登録する。検索と取り出しはMenuUtil.getMenuComponentMenuUtil.getMenuComponentsで行う。

ガイダンスパネル、ステータスパネルへのメッセージ表示

ガイダンスパネルはコマンドガイダンスを表示するパネル。ステータスパネルはマウスの位置情報、図形ヒットの状況をリアルタイムで表示するパネル。



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
メニューコンポーネント(ボタン、コンボボックス、プルダウンメニュー等)の一覧を管理

フィールド

説明

MenuComponentList

メニューコンポーネントを登録するリスト。


メソッド

説明

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;



Copyright (c) 2009-2013
All other trademarks are property of their respective owners.