我們能否使用 Java 來防止 JTree 中的節點和子節點摺疊?\n


是的,我們可以使用 setExpandedState() 方法來防止 JTree 中的節點和子節點摺疊。此方法設定此 JTree 的展開狀態。如果 state 為 true,則所有路徑和路徑的父節點都被標記為展開。

以下是一個使用 Java 來防止 JTree 中的節點和子節點摺疊的示例 -

示例

package my;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.text.Position;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
public class SwingDemo {
   public static void main(String[] args) throws Exception {
      JFrame frame = new JFrame("Demo");
      DefaultMutableTreeNode node = new DefaultMutableTreeNode("Project");
      DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("App");
      DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Website");
      DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("WebApp");
      node.add(node1);
      node.add(node2);
      node.add(node3);
      DefaultMutableTreeNode one = new DefaultMutableTreeNode("Learning website");
      DefaultMutableTreeNode two = new DefaultMutableTreeNode("Business website");
      DefaultMutableTreeNode three = new DefaultMutableTreeNode("News publishing website");
      DefaultMutableTreeNode four = new DefaultMutableTreeNode("Android app");
      DefaultMutableTreeNode five = new DefaultMutableTreeNode("iOS app");
      DefaultMutableTreeNode six = new DefaultMutableTreeNode("Editor WebApp");
      node1.add(one);
      node1.add(two);
      node1.add(three);
      node2.add(four);
      node2.add(five);
      node3.add(six);
      JTree tree = new JTree(node) {
         protected void setExpandedState(TreePath path, boolean state) {
            if (state) {
               super.setExpandedState(path, state);
            }
         }
      };
      for (int i = 0; i < tree.getRowCount(); i++) {
         tree.expandRow(i);
      }
      tree.putClientProperty("JTree.lineStyle", "Angled");
      int begnRow = 0;
      String prefix = "A";
      TreePath treePath = tree.getNextMatch(prefix, begnRow, Position.Bias.Forward);
      System.out.println("Node = "+treePath);
      tree.setRowHeight(25);
      frame.add(tree);
      frame.setSize(550,400);
      frame.setVisible(true);
   }
}

輸出

更新於: 30-Jul-2019

327 瀏覽量

開啟你的 職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.