ファイルをバイナリ形式で表示する (Java+Swing編)
ディレクトリツリー・ビュー、ファイル一覧表示ビューおよび、ファイルデータ表示ビューの初期化を行います。
FileTreeView.java
/* ----------------------------------------------------------------------- */
/**
* コンストラクタ.
*
*/
FileTreeView() {
//! コンピュータ名をディレクトリツリーのルートに登録する.
DefaultMutableTreeNode rootNode = createRootDirectory();
//! ディレクトリツリーにドライブ名を登録する.
addDriveName( rootNode );
//! ディレクトリツリーのディレクトリが展開されるときのイベント処理を登録する.
addTreeWillExpandListener( new TreeWillExpandListener() {
@Override
public void treeWillCollapse( TreeExpansionEvent e ) throws ExpandVetoException {
}
@Override
public void treeWillExpand( TreeExpansionEvent e) throws ExpandVetoException {
fileTreeExpand( e );
}
});
//! ディレクトリの選択が変更されるときのイベント処理を登録する.
addTreeSelectionListener( new TreeSelectionListener(){
@Override
public void valueChanged( TreeSelectionEvent e ){
fileTreeSelectChanged( e );
}
});
//! ルートノードを展開表示する.
expandRow( 0 );
}
コンストラクタでディレクトリツリーの初期化を行います。
最初にルートノードにコンピュータ名を登録します。
次にルートノードの子ノードとしてドライブ名のリストを登録します。
ディレクトリツリーのディレクトリが展開されるときのイベント処理を登録します。
(ディレクトリの展開が閉じられるイベント「treeWillCollapse()」の処理は何も実行しません。)
ディレクトリの選択が変更されるときのイベント処理を登録します。
最後にルートノードを展開表示します。
FileListView.java
/* ----------------------------------------------------------------------- */
/**
* コンストラクタ.
*
*/
FileListView() {
DefaultTableModel model = new DefaultTableModel();
setModel( model );
//! カラム名を登録する.
model.setColumnIdentifiers( new String[] { "ファイル名", "サイズ", "更新日時" } );
//! それぞれのカラムにレンダラーを設定する.
getColumnModel().getColumn(0).setCellRenderer( new FileNameTableCellRenderer() );
getColumnModel().getColumn(1).setCellRenderer( new FileSizeTableCellRenderer() );
getColumnModel().getColumn(2).setCellRenderer( new FileDateTableCellRenderer() );
//! 罫線を非表示にする.
setShowHorizontalLines( false );
setShowVerticalLines( false );
//! テーブルの項目をダブルクリックしたときのイベント処理を登録する.
addMouseListener( new MouseAdapter() {
@Override
public void mouseClicked( MouseEvent me ) {
if( me.getButton() == MouseEvent.BUTTON1 && me.getClickCount() == 2 ){
onDblClick( me );
}
}
});
//! ファイル一覧にドライブ名を表示する.
showDriveName( model );
setVisible( true );
}
テーブルモデルを生成して JTable にセットします。
カラム名をテーブルモデルに登録します。
カラム位置 | カラム名 |
1 | ファイル名 |
2 | サイズ |
3 | 更新日時 |
それぞれのカラムにレンダラーを設定します。
表示するリストの罫線を非表示にします。
ファイル一覧の項目をダブルクリックしたときのイベント処理を登録します。
ファイル一覧にドライブ名のリストを初期データとして表示します。
最後にファイル一覧ビューを可視状態にします。
FileDataView.java
/* ----------------------------------------------------------------------- */
/**
* コンストラクタ.
*
* @param vscroll 垂直スクロールバー.
* @param hscroll 水平スクロールバー.
*/
FileDataView( JScrollBar vscroll, JScrollBar hscroll ) {
//! 背景色をセットする.
setBackground( Color.WHITE );
//! スクロールバーのオブジェクトを保存する.
scrollV = vscroll;
scrollH = hscroll;
//! 垂直スクロールバーを初期化する.
scrollV.setMinimum( 0 );
scrollV.setMaximum( 0 );
scrollV.setValue( 0 );
//! 水平スクロールバーを初期化する.
scrollH.setMinimum( 0 );
scrollH.setMaximum( 0 );
scrollH.setValue( 0 );
//! スクロールバーのイベントを登録する.
scrollV.addAdjustmentListener( this );
scrollH.addAdjustmentListener( this );
//! ホイールマウスのイベントを登録する.
addMouseWheelListener( new MouseWheelListener() {
@Override
public void mouseWheelMoved( MouseWheelEvent e ) {
onMouseWheel( e );
}
});
//! ウインドウサイズが変更されるときのイベントを登録する.
addComponentListener( new ComponentListener() {
@Override
public void componentHidden( ComponentEvent e ) {
}
@Override
public void componentMoved( ComponentEvent e ) {
}
@Override
public void componentResized( ComponentEvent e ) {
onResized( e );
}
@Override
public void componentShown( ComponentEvent e ) {
}
});
}
バイナリ表示ビューの初期化を行います。
ビューの背景色を「白色」にします。
引数で貰ったスクロールバーのオブジェクトを保存しておきます。
スクロールバーのイベント通知先として「バイナリ表示ビュー」を登録します。
ホイールマウスのイベントを登録します。
ウインドウサイズが変更されるときのイベントを登録します。