JTree là thành phần hiển thị dữ liệu theo cấu trúc phân cấp. Người dùng có thể mở rộng hoặc thu gọn các cây con. Interface TreeNode định nghĩa các phương thức cho nút của JTree. Lớp DefaultMutableTreeNode cung cấp triển khai mặc định của TreeNode. Chúng ta có thể vô hiệu hóa nút lá của JTree bằng cách ghi đè phương thức getTreeCellRendererComponent() của lớp DefaultTreeCellRenderer.
Cú pháp
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
Ví dụ
import java.awt.*;
import javax.swing.tree.*;
import javax.swing.*;
public class JTreeLeafNodeDisableTest extends JFrame {
private TreeNode treeNode;
private JTree tree;
public JTreeLeafNodeDisableTest() {
setTitle("JTreeLeafNodeDisable Test");
treeNode = new DefaultMutableTreeNode("Country");
tree = new JTree();
tree.setModel(new DefaultTreeModel(treeNode));
tree.setCellRenderer(new CustomDefaultTreeCellRenderer());
add(tree);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JTreeLeafNodeDisableTest();
}
static class CustomDefaultTreeCellRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
boolean enabled = false;
sel = enabled;
hasFocus = enabled;
Component treeCellRendererComponent = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
treeCellRendererComponent.setEnabled(enabled);
return treeCellRendererComponent;
}
}
}
Kết quả
