<AI>
JavaFXの TableView でマウスポインター(カーソル)の形状を変更するには、
setCursor() メソッドを使用します。
テーブル全体、特定の行、または特定のセルなど、どの範囲で形状を変えたいかによって実装方法が異なります。
1. テーブル全体でカーソルを変える場合
テーブルの上にマウスが乗っているときに、一括でカーソルを変更する最もシンプルな方法です。
java
import javafx.scene.Cursor;
import javafx.scene.control.TableView;
// テーブル全体のカーソルを「手(リンク選択)」の形状にする
tableView.setCursor(Cursor.HAND);
コードは注意してご使用ください。
2. 特定の行(データがある部分)だけでカーソルを変える場合
データが表示されている「行」の上に乗ったときだけカーソルを変えたい場合は、setRowFactory を使用します。
データのない空白部分では通常のカーソルに戻ります。
java
tableView.setRowFactory(tv -> {
TableRow row = new TableRow<>();
// マウスが乗ったときと外れたときのイベントを設定
row.setOnMouseEntered(event -> {
if (!row.isEmpty()) {
row.setCursor(Cursor.HAND);
}
});
row.setOnMouseExited(event -> {
row.setCursor(Cursor.DEFAULT);
});
return row;
});
コードは注意してご使用ください。
3. 特定の列やセルだけでカーソルを変える場合
特定の列(クリック可能なリンク列など)だけでカーソルを変えたい場合は、setCellFactory を使用します。
java
myColumn.setCellFactory(col -> {
TableCell cell = new TableCell<>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
} else {
setText(item);
}
}
};
// セルにマウスが乗ったときの処理
cell.setOnMouseEntered(event -> {
if (!cell.isEmpty()) {
cell.setCursor(Cursor.HAND);
}
});
cell.setOnMouseExited(event -> {
cell.setCursor(Cursor.DEFAULT);
});
return cell;
});
コードは注意してご使用ください。
主なカーソルの種類 (Cursor.〜)
Cursor.HAND: 手のひら(リンクなどを指すとき)
Cursor.CLOSED_HAND: 掴んでいる手(ドラッグ中など)
Cursor.CROSSHAIR: 十字(範囲選択など)
Cursor.WAIT: 砂時計 / ぐるぐる(処理中)
Cursor.TEXT: I型アイビーム(テキスト選択用)
実装したい画面のイメージに合わせて、上記の方法を試してみてください。
もし特定の条件(例: 特定のステータスの行だけ、ヘッダー部分だけ)でカーソルを変えたい場合は、
条件を詳しく教えていただければ、それに合わせたコードをご提案します。