JTreeの+-ボタンについて
JTreeを使ってウィンドウズエクスプローラーのようなものを作りたいと思っています。
JTreeはノードのテキスト内をクリックしないと選択されませんが、エクスプローラーのツリーはそのノードと同じ高さであればどこをクリックしても選択になります。
それを再現しようと以下のコードを書いてみました。
しかしこれだとツリーのノードの展開、非展開を切り替える+-のボタン?の動作が変になります。
+-ボタン領域をクリックすると展開、非展開切り替えの後で改めてノードを選択、展開になります。
+-ボタン領域をクリックした場合はノード選択の処理に入らないようにすれば良いと思うのですがその+-ボタン領域の計算方法や取得方法が分かりません。
あるいはもっと良い方法を知っている方、是非教えてください。よろしくお願いします。
jTree.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int d = jTree.getRowBounds(0).getBounds().y;
int row = jTree.getRowCount();
int height = jTree.getRowHeight();
int mouse = e.getY() + d;
int selectrow = 0;
if (height > 0) {
selectrow = (int) (mouse / height);
} else {
selectrow = jTree.getRowForLocation(e.getX(), e.getY());
}
if (selectrow < row) {
jTree.setSelectionRow(selectrow);
}
if (SwingUtilities.isRightMouseButton(e)) {
jPopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
お礼
ありがとうございます。