ファイルをバイナリ形式で表示する (Java+Swing編)
ディレクトリが展開されるときに、展開されるディレクトリ直下のファイルのリストを取得してディレクトリのみをツリービューに追加します。
ツリービューでノードが展開されるときにイベントが発生するので、該当するイベントにイベントハンドラを追加して、ディレクトリの展開処理を行います。
FileTreeView.java
/* ----------------------------------------------------------------------- */
/**
* ディレクトリツリーのディレクトリが展開されるときのイベント処理.
*
* @param e イベントパラメータ.
*/
private void fileTreeExpand( TreeExpansionEvent e ) {
//! 展開されるノードを取得する.
TreePath path = e.getPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
if( node == null ){
return;
}
//! 展開されるディレクトリのサブディレクトリを一旦クリアする.
node.removeAllChildren();
//! 展開されるディレクトリのフルパスを取得する.
String filePath = getAbsolutePath( path );
if( filePath.length() > 0 ){
//! 展開されるディレクトリのサブディレクトリを表示する.
addDirectory( node, filePath, false );
}else{
//! フルパス名が無い場合はルートの展開なのでドライブ名を表示する.
addDriveName( node );
}
}
ディレクトリツリーのノードが展開されるときに呼び出されるイベント処理です。
展開されるノードにはダミーで1個だけサブディレクトリの子ノードがあるはずなので、一旦削除します。
(そうしないと、同じサブディレクトリのノードが2個できてしまいます。)
展開されるノードに対応したディレクトリの絶対パスを取得します。
絶対パスがある場合は、ドライブ名かディレクト名のノードなので、展開するノードにディレクトリ名のリストを子ノードとして追加します。
絶対パスがない場合、展開するノードはルートノードなので、展開するノードにドライブ名のリストを子ノードとして追加します。