ファイルをバイナリ形式で表示する (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 );
}
	
	- タイトルバーに表示する文字列を設定します。
 - ウインドウのサイズと表示位置を設定します。
 - 「X」ボタンの動作を「ウインドウの終了」に設定します。
 - Look & Feelをセットします。
 - メニューを作成します。
 - ディレクトリ・ツリー表示ビューを生成します。
 - ファイル一覧表示ビューを生成します。
 - バイナリデータ表示ビューを生成します。
 - 右側の分割ウインドウを作成します。
 - 全体の分割ウインドウを作成します。
 - ステータスバーを生成します。
 - イベント通知先をセットします。
 
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)も登録します。
最後に生成したメニューバーをメインフレームに登録します。