• category: swing folder: VerticalNavigationMenu title: JTreeとCardLayoutでサイドメニューを作成する tags: [JTree, CardLayout, TreeSelectionListener] author: aterai pubdate: 2017-10-02T15:53:07+09:00 description: JTreeのスタイルを変更してサイドメニュー風のコンポーネントを作成し、ノード選択に応じてCardLayoutでのパネル切り替えを実行します。 image: https://drive.google.com/uc?export=view&id=1HtdjEFvmcBet6Qv2s2zHMZWTgzkb2rcqqQ

概要

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 -> {
  // http://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 in GitHub: Java, Kotlin

解説

参考リンク

コメント