depressionist

[prev|next|index]2003:04

[prev|next]20030120Mo

とうとう痺れが切れたので、 新しい ID を登録して再度申し込むことにした。 すると簡単に申し込み手続きを終えることができたではないか。 以前の ID では相変わらずキャンセル処理中である。 いったいどういう処理をしているものやら。

帰りがけにパソコンショップに立寄る。 Apple Pro Speakers と CaptyTV を購入。 これで部屋に散乱しているビデオカセットを整理できる。

スピーカーを箱から出して、 iPod に接続しようとしたら、 スピーカーのプラグが超ミニサイズでささらない。 iPod はミニサイズジャックである。 とてもがっかり。

[prev|next]20030121Tu

帰りがけに電気屋に寄って超ミニプラグ(2.5mmφ)を ミニプラグ(3.5mmφ)に変換するアダプターを購入。 しようと思ったのにそのようなアダプターがない。 ミニプラグを超ミニプラグにするアダプターはあるのに。

[prev|next]20030122We

帰りがけに電気屋に寄って超ミニプラグをミニプラグに変換するアダプターを購入。 しようと思ったのにそのようなアダプターがない。 二軒も回ったのに見つからない。 もしかしてそんなアダプターは存在しないのだろうか。

[prev|next]20030123Th

ネットで超ミニプラグをミニプラグに変換するアダプターはあるかと検索してみた。 いくつかの日記サイトでそのようなアダプターを購入したことが書かれていた。 しかしそのアダプターの型番やメーカーは書かれていない。 残念至極。 でもまあこの世に存在しているのが分かっただけでもありがたい。

[prev|next]20030124Fr

Java でディレクトリツリーをブラウズする画面を作ってみた。 Swing の JTree を使って。 以下備忘のため The JavaTM Tutorial の JTree の使い方 の一部を纏めておこう。

JTree の使い方

ツリーを作る

1: DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
2: createNodes (root);
3: final JTree tree = new JTree(root);
4: getContentPane ().add (tree);

まず、ツリーのルートノードとして使われる DefaultMutableTreeNode のインスタンスを作成する(1)。 そしてルートノードの下にノードを作成する(2)。 その後に、ルートノードを JTree のコンストラクタの引数にわたして、 ツリーを作成する(3)。

ルートノードの下にノードを作成するコードは以下のとおり。

 1: private void createNodes (DefaultMutableTreeNode root) {
 2:   DefaultMutableTreeNode folder = null;
 3:   DefaultMutableTreeNode file = null;
 4:   folder = new DefaultMutableTreeNode ("Folder 1");
 5:   root.add (folder);
 6:   file = new DefaultMutableTreeNode ("File 1.1");
 7:   folder.add (file);
 8:   file = new DefaultMutableTreeNode ("File 1.2");
 9:   folder.add (file);
10:   folder = new DefaultMutableTreeNode ("Folder 2");
11:   file = new DefaultMutableTreeNode ("File 2.1");
12:   folder.add (file);
13:   file = new DefaultMutableTreeNode ("File 2.2");
14:   folder.add (file);
15:   file = new DefaultMutableTreeNode ("File 2.3");
16:   folder.add (file);
17: }

DefaultMutableTreeNode のコンストラクタの引数は、 ユーザオブジェクト (ツリーノードに対応するデータもしくはデータを指すオブジェクト)である。 ユーザオブジェクトは文字列であってもよいし、 カスタム名オブジェクトでもよい。 もしカスタム名オブジェクトで実装するなら、 toString メソッドをオーバーライドして、 ノードを表示する時に使用する文字列を返すようにすべし。

ノードが選択された時の動作

ノードが選択された時の動作は単純である。 ツリー選択リスナーを実装してツリーに登録すればよい。

 1: tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION);
 2: //選択が変化した時のリスナーを登録
 3: tree.addTreeSelectionListener(new TreeSelectionListener() {
 4:     public void valueChanged(TreeSelectionEvent e) {
 5:         DefaultMutableTreeNode node = (DefaultMutableTreeNode)
 6:             tree.getLastSelectedPathComponent();
 7:         if (node == null) 
 8:           return;
 9:         if (node.isLeaf()) {
10:           BookInfo book = (BookInfo)node.getUserObject();
11:           displayURL(book.bookURL);
12:         } else {
13:           displayURL(helpURL); 
14:         }
15:     }
16: });

まずツリーのノードが一つだけしか選択できないようにする(1)。 イベントハンドラを生成し、ツリーに登録する(3)。 このイベントハンドラは TreeSelectionListener インタフェースを実装する(3)。 イベントハンドラでは、 ツリーの getLastSelectedPathComponent メソッドを使って、 選択されたノードを取り出す(5, 6)。 getUserObjectメソッドを使って、 ノードに関連付けられたデータを取り出す(10)。

ノードが選択された時のリスナーのほかにもいろいろなリスナーがある。

以上

ディレクトリツリー

もし Windows Explorer のディレクトリツリーのようなインタフェースを作るのであれば、 ツリーのノードに File オブジェクトを関連付けることになるだろう。 ただし File クラスの toString メソッドはファイルのフルパスを返す。 そのためクラスを継承して、 ファイル名だけ取り出す toString メソッドをオーバーライドする。 その際 File クラスから派生させるのではなく、 DefaultMutableTreeNode を継承して、 ユーザオブジェクトに File オブジェクトを登録するのがよい。

閑話休題

歯医者に行くため早退しようとしたら、 上司からがっくりくるような一言をメールで貰う。 本当ならちょっとむっとくるような内容なのかもしれない。 とはいえそういわれても仕方がなくもあり、 そこまでいわなくてもいいだろうという感もある。 いずれにせよ精神状態がだいぶよいので、 外面的には平静を保つことができた。

マフラー 帰りの電車を待つ間、 ふと前を見ると 女子大生と思われる子のマフラーが大変なことになっていた。

[prev|next]20030125Sa

昨夜だんだん昨日の上司のメールが気になりだして、 どんどん胸の中で膨らんできた。 何をしても落ち着かない。 いらいらというのでもなければ、 そわそわというのでもない。 ずんと腹の下に何かが居座って動かないでいるようなのだ。

それで昨日は長めに効く薬を飲んでおいた。 気がついたら夜 7 時すぎ。 晩飯を食ってボーッとして寝る。 薬は昨日と同じ。

[prev|next]20030126Su

気がついたら夜 7 時すぎ。 晩飯を食ってボーッとしているうちに眠れなくなる。 なんか痛いなと思って右足の裏を見ると縦に 10cm くらいの傷があった。 いつのまにかカッターで足を切っていたらしい。 切ったといっても深くはない皮 1 枚くらい。 切ったとしたら昨日の晩か。

明日会社に行きたくないと思っている自分がいる。 グッドモーニングベトナムの What A Wonderful World を聞いて、 涙なんか流してたりして。 このまま夜が明けないでくれたらいいのに。

そういうわけにも行かないのでとにかく布団に入る。 しかし寝付けない。

なんとなく、 寝られないのは明日の朝いつものように 6 時半に起きられないのではないかという、 不安のせいなんじゃないかとひらめく。 深夜 2 時、もう一風呂浴びて、 薬を寝る前と同じ量また飲んで横になる。 もう 6時半だろうが 7 時半だろうが、 19 時半だろうが構うものか。