ファイルをバイナリ形式で表示する (Java+Swing編)

画面のデザイン

画面のデザインはツールを使わずに、ソースコードに直でコードを書きます。

メインフォームを初期化する

JavaSwing001.java


/* ----------------------------------------------------------------------- */
/**
 *  コンストラクタ.
 *
 *  @param  title   メインウインドウのタイトルバーに表示する文字列.
 */
JavaSwing001( String title ) {

    //! タイトルバーを表示する.
    setTitle( title );

    //! ウインドウのサイズと表示位置を設定する.
    setBounds( 200, 200, 800, 600 );

    //!「X」ボタンのイベントを設定する.
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

    //! ネイティブシステムの Look & Feelをセット.
    try{
        UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
    } catch( Exception e ){
        e.printStackTrace();
    }

    //! メニューを作成する.
    createMenu();

    //! ディレクトリ・ツリー表示ビューを生成する.
    JScrollPane treePanel = createTreeView();

    //! ファイル一覧表示ビューを生成する.
    JScrollPane listPanel = createListView();

    //! バイナリデータ表示ビューを生成する.
    JPanel dataPanel = createDataView();

    //! 右側の分割ウインドウを作成する.
    JSplitPane rightPanel = new JSplitPane( JSplitPane.VERTICAL_SPLIT );
    rightPanel.setLeftComponent(  listPanel );
    rightPanel.setRightComponent( dataPanel );

    //! 全体の分割ウインドウを作成する.
    JSplitPane mainPanel = new JSplitPane();
    mainPanel.setLeftComponent(  treePanel  );
    mainPanel.setRightComponent( rightPanel );

    Container contentPane = getContentPane();
    contentPane.add( mainPanel, BorderLayout.CENTER );

    //! ステータスバーを生成する.
    contentPane.add( createStatusBar(), BorderLayout.PAGE_END );

    //! イベント通知先をセットする.
    fileTreeView.addEventListener( this );
    fileListView.addEventListener( this );
}
	

  1. タイトルバーに表示する文字列を設定します。
  2. ウインドウのサイズと表示位置を設定します。
  3. 「X」ボタンの動作を「ウインドウの終了」に設定します。
  4. Look & Feelをセットします。
  5. メニューを作成します。
  6. ディレクトリ・ツリー表示ビューを生成します。
  7. ファイル一覧表示ビューを生成します。
  8. バイナリデータ表示ビューを生成します。
  9. 右側の分割ウインドウを作成します。
  10. 全体の分割ウインドウを作成します。
  11. ステータスバーを生成します。
  12. イベント通知先をセットします。

ディレクトリ・ツリー・ビューを生成する

JavaSwing001.java


/* ----------------------------------------------------------------------- */
/**
 *  ディレクトリ・ツリー表示ビューを生成する.
 *
 *  @return     生成したディレクトリ・ツリー表示ビュー.
 */
private JScrollPane createTreeView() {

    //! スクロール・パネルを生成する.
    JScrollPane panel = new JScrollPane();

    //! ツリービューを生成する.
    fileTreeView = new FileTreeView();

    //! スクロールビューにツリービューを配置する.
    panel.setViewportView( fileTreeView );

    panel.setPreferredSize( new Dimension(150, 400) );

    return panel;
}
	

ディレクトリツリー・ビューを生成します。

ツリーコントロールクラスの JTree から派生した ディレクトリツリー・ビュー(FileTreeView)を、スクロール・ビュー(JScrollPane) に配置します。

スクロール・ビューにビューを同期させるメソッドは、「JScrollPane.setViewport()」です。


  public void JScrollPane.setViewport(JViewport viewport)
	

引数説明
viewport同期させるビュー。


スクロール・ビューの初期サイズを設定するメソッドは、「JScrollPane.setPreferredSize()」です。


  public void setPreferredSize(Dimension preferredSize)
	

引数説明
preferredSize新しい推奨サイズ。


ファイル一覧表示ビューを生成する

JavaSwing001.java


/* ----------------------------------------------------------------------- */
/**
 *  ファイル一覧表示ビューを生成する.
 *
 *  @return     生成したファイル一覧表示ビュー.
 */
private JScrollPane createListView() {

    //! スクロール・パネルを生成する.
    JScrollPane panel = new JScrollPane();

    //! リストビューを生成する.
    fileListView = new FileListView();

    //! スクロールビューにリストビューを配置する.
    panel.setViewportView( fileListView );

    //! リストビューの背景色を白色にする.
    panel.getViewport().setOpaque( true );
    panel.getViewport().setBackground( Color.WHITE );

    panel.setPreferredSize( new Dimension(400, 100) );

    return panel;
}
	

ファイル一覧表示ビューを生成します。

テーブルコントロールクラスの JTable から派生した ファイル一覧表示ビュー(FileListView)を、スクロール・ビュー(JScrollPane) に配置します。

ファイル一覧表示ビューの背景色を白色にします。

バイナリデータ表示ビューを生成する

FileTreeView.java


/* ----------------------------------------------------------------------- */
/**
 *  バイナリデータ表示ビューを生成する.
 *
 *  @return     生成したバイナリデータ表示ビュー.
 */
private JPanel createDataView() {

    //! バイナリデータ表示ビューの土台になるパネルを生成する.
    JPanel panel = new JPanel();
    panel.setLayout( new BorderLayout() );

    //! 水平スクロールバーをパネルに配置する.
    JScrollBar sbH = new JScrollBar( JScrollBar.HORIZONTAL );
    panel.add( sbH, BorderLayout.SOUTH );

    //! 垂直スクロールバーをパネルに配置する.
    JScrollBar sbV = new JScrollBar( JScrollBar.VERTICAL );
    panel.add( sbV, BorderLayout.EAST );

    //! バイナリデータ表示ビューをパネルに配置する.
    fileDataView = new FileDataView( sbV, sbH );
    panel.add( fileDataView, BorderLayout.CENTER );

    return panel;
}
	

バイナリデータ表示ビューを生成します。

バイナリデータ表示ビューの土台になるパネル(JPanel)を生成します。

水平スクロールバーをパネルに下側に配置します。

垂直スクロールバーをパネルに右側に配置します。

バイナリデータ表示ビューをパネルの中央に配置します。

ステータスバーを生成する

FileTreeView.java


/* ----------------------------------------------------------------------- */
/**
 *  ステータスバーを生成する.
 *
 *  @return     生成したステータスバー.
 */
private JPanel createStatusBar() {

    //! ステータスバーになるパネルを生成する.
    JPanel bar = new JPanel( new FlowLayout( FlowLayout.LEFT ) );

    statusBar = new JLabel( "" );

    //! パネルにラベルを配置する.
    bar.add( statusBar );

    return bar;
}
	

ステータスバーを生成します。

まず、ステータスバーになるパネル(JPanel)を、メッセージバーに表示するメッセージが左寄せになるようにレイアウトマネージャを設定して生成します。

メニューを作成する

FileTreeView.java


/* ----------------------------------------------------------------------- */
/**
 *  メニューを作成する.
 *
 */
private void createMenu() {

    //! メニューバーを生成する.
    JMenuBar menubar = new JMenuBar();

    //! メニューバーに「ファイル」を追加.
    JMenu menu1 = new JMenu( "ファイル" );
    menubar.add( menu1 );

    //!「ファイル」にサブメニュー「アプリケーションの終了」を追加.
    JMenuItem menuitem1_1 = new JMenuItem( "アプリケーションの終了" );
    menu1.add( menuitem1_1 );
    menuitem1_1.addActionListener( new ActionListener() {
        @Override
        public void actionPerformed( ActionEvent e ) {
            menuAppExit( e );
        }
    });

    //! メニューバーに「ヘルプ」を追加.
    JMenu menu2 = new JMenu( "ヘルプ" );
    menubar.add( menu2 );

    //!「ヘルプ」にサブメニュー「バージョン情報」を追加.
    JMenuItem menuitem2_1 = new JMenuItem( "バージョン情報" );
    menu2.add( menuitem2_1 );
    menuitem2_1.addActionListener( new ActionListener() {
        @Override
        public void actionPerformed( ActionEvent e ) {
            menuAppAbout( e );
        }
    });

    //! フレームウインドウに作成したメニューを登録する.
    setJMenuBar( menubar );
}
	

メニューバーを生成します。

メニュー項目として「ファイル」、「ヘルプ」をメニューバーに追加します。

「ファイル」のサブメニューとして「アプリケーションの終了」を追加します。

併せてサブメニュー選択時のイベント処理(menuAppExit)も登録します。

「ヘルプ」のサブメニューとして「バージョン情報」を追加します。

併せてサブメニュー選択時のイベント処理(menuAppAbout)も登録します。

最後に生成したメニューバーをメインフレームに登録します。



商標に関する表示