概要

JTreeのスタイルを変更してサイドメニュー風のコンポーネントを作成し、ノード選択に応じてCardLayoutでのパネル切り替えを実行します。

サンプルコード

TreeModel model = makeModel();
CardLayout cardLayout = new CardLayout();
JPanel p = new JPanel(cardLayout);
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
Enumeration en = root.postorderEnumeration();
while (en.hasMoreElements()) {
  DefaultMutableTreeNode node = (DefaultMutableTreeNode) en.nextElement();
  String title = Objects.toString(node.getUserObject());
  p.add(new JLabel(title), title);
}

JTree tree = new RowSelectionTree();
tree.setModel(model);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(e -> {
  // https://ateraimemo.com/Swing/CardLayoutTabbedPane.html
  Object o = tree.getLastSelectedPathComponent();
  if (o instanceof DefaultMutableTreeNode) {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) o;
    String title = Objects.toString(node.getUserObject());
    cardLayout.show(p, title);
  }
});
view all

解説

参考リンク

コメント