概要

JTreeからSelectionModelを取得し、ノードの選択モードを切り替えます。

サンプルコード

JRadioButton r0 = new JRadioButton("DISCONTIGUOUS_TREE_SELECTION", true);
r0.addItemListener(e -> {
  if (e.getStateChange() == ItemEvent.SELECTED) {
    tree.getSelectionModel().setSelectionMode(
      TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
  }
});

JRadioButton r1 = new JRadioButton("SINGLE_TREE_SELECTION");
r1.addItemListener(e -> {
  if (e.getStateChange() == ItemEvent.SELECTED) {
    tree.getSelectionModel().setSelectionMode(
      TreeSelectionModel.SINGLE_TREE_SELECTION);
  }
});

JRadioButton r2 = new JRadioButton("CONTIGUOUS_TREE_SELECTION");
r2.addItemListener(e -> {
  if (e.getStateChange() == ItemEvent.SELECTED) {
    tree.getSelectionModel().setSelectionMode(
      TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、tree.getSelectionModel().setSelectionMode(...)メソッドを使用して、選択モードを設定しています。

  • TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION
    • Ctrl+ClickShift+Clickなどで自由にTreePathを選択可能
  • TreeSelectionModel.SINGLE_TREE_SELECTION
    • TreePathをひとつだけ選択可能
  • TreeSelectionModel.CONTIGUOUS_TREE_SELECTION
    • TreePathが連続している場合は複数選択が可能

参考リンク

コメント