Java Tree (JTree) - Swing Example |
Java Tree (JTree) - Swing Example สำหรับ Tree หรือ JTree (javax.swing.JTree) จัดอยู่ในกลุ่มของ Component ใช้สร้าง Tree ลักษณะเมนูแตกย่อยไปตามแขนงต่าง ๆ ที่ประกอบด้วย Root และ Node ย่อย ๆ ซึ่งสามารถสร้าง Node ย่อยได้หลาย ๆ ชั้นขึ้นอยู่กับความต้องการ และในแต่ล่ะ Node สามารถที่จะสร้าง Event Handler เพื่อให้โปรแกรมทำงานตามเงื่อนไขต่าง ๆ ตามที่ต้องการ
Java Tree (JTree) - Swing Example
Syntax
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode("Root");
// Item 1
DefaultMutableTreeNode item1 = new DefaultMutableTreeNode("Item 1");
item1.add(new DefaultMutableTreeNode("Item 1 - 1"));
item1.add(new DefaultMutableTreeNode("Item 1 - 2"));
item1.add(new DefaultMutableTreeNode("Item 1 - 3"));
item1.add(new DefaultMutableTreeNode("Item 1 - 4"));
// Item 2
DefaultMutableTreeNode item2 = new DefaultMutableTreeNode("Item 2");
item2.add(new DefaultMutableTreeNode("Item 2 - 1"));
item2.add(new DefaultMutableTreeNode("Item 2 - 2"));
item2.add(new DefaultMutableTreeNode("Item 2 - 3"));
item2.add(new DefaultMutableTreeNode("Item 2 - 4"));
item2.add(new DefaultMutableTreeNode("Item 2 - 5"));
item2.add(new DefaultMutableTreeNode("Item 2 - 6"));
// Selected Node
tree.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
JOptionPane.showMessageDialog(null, selectedNode
.getUserObject().toString());
}
});
Controls Icon Tools
Example 1 ตัวอย่างการใช้ Tree ง่าย ๆ ด้วย JTree ด้วยการสร้าง Node ของ Tree
MyForm.java
package com.java.myapp;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
public class MyForm extends JFrame {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm frame = new MyForm();
frame.setVisible(true);
}
});
}
/**
* Create the frame.
*/
public MyForm() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 362, 249);
setTitle("ThaiCreate.Com Java GUI Tutorial");
getContentPane().setLayout(null);
// Root
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode("Root");
// Item 1
DefaultMutableTreeNode item1 = new DefaultMutableTreeNode("Item 1");
// Item 2
DefaultMutableTreeNode item2 = new DefaultMutableTreeNode("Item 2");
// Add Item Node Item 1 & Item 2
treeRoot.add(item1);
treeRoot.add(item2);
// Tree
final JTree tree = new JTree(treeRoot);
tree.setBounds(28, 11, 209, 131);
// Scroll Pane
JScrollPane scroll = new JScrollPane();
scroll.setBounds(28, 11, 209, 169);
// Image Icon
ImageIcon imageIcon = new ImageIcon(getClass().getResource("open.gif"));
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setLeafIcon(imageIcon);
tree.setCellRenderer(renderer);
tree.setShowsRootHandles(true);
tree.setRootVisible(false);
// Add Scroll and Tree
scroll.setViewportView(tree);
getContentPane().add(scroll);
// Selected
tree.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
JOptionPane.showMessageDialog(null, selectedNode
.getUserObject().toString());
}
});
}
}
Output
แสดง Tree แบบง่าย ๆ
ตอนนี้ยังไม่มี Node ย่อย
Example 2 ตัวอย่างการสร้าง Node ย่อยจาก Root ของ Tree
MyForm.java
package com.java.myapp;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
public class MyForm extends JFrame {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm frame = new MyForm();
frame.setVisible(true);
}
});
}
/**
* Create the frame.
*/
public MyForm() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 362, 249);
setTitle("ThaiCreate.Com Java GUI Tutorial");
getContentPane().setLayout(null);
// Root
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode("Root");
// Item 1
DefaultMutableTreeNode item1 = new DefaultMutableTreeNode("Item 1");
item1.add(new DefaultMutableTreeNode("Item 1 - 1"));
item1.add(new DefaultMutableTreeNode("Item 1 - 2"));
item1.add(new DefaultMutableTreeNode("Item 1 - 3"));
item1.add(new DefaultMutableTreeNode("Item 1 - 4"));
// Item 2
DefaultMutableTreeNode item2 = new DefaultMutableTreeNode("Item 2");
item2.add(new DefaultMutableTreeNode("Item 2 - 1"));
item2.add(new DefaultMutableTreeNode("Item 2 - 2"));
item2.add(new DefaultMutableTreeNode("Item 2 - 3"));
item2.add(new DefaultMutableTreeNode("Item 2 - 4"));
item2.add(new DefaultMutableTreeNode("Item 2 - 5"));
item2.add(new DefaultMutableTreeNode("Item 2 - 6"));
// Add Item Node Item 1 & Item 2
treeRoot.add(item1);
treeRoot.add(item2);
// Tree
final JTree tree = new JTree(treeRoot);
tree.setBounds(28, 11, 209, 131);
// Scroll Pane
JScrollPane scroll = new JScrollPane();
scroll.setBounds(28, 11, 209, 169);
// Image Icon
ImageIcon imageIcon = new ImageIcon(getClass().getResource("open.gif"));
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setLeafIcon(imageIcon);
tree.setCellRenderer(renderer);
tree.setShowsRootHandles(true);
tree.setRootVisible(false);
// Add Scroll and Tree
scroll.setViewportView(tree);
getContentPane().add(scroll);
// Selected
tree.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
JOptionPane.showMessageDialog(null, selectedNode
.getUserObject().toString());
}
});
}
}
Output
แสดง Node ย่อยจาก Tree หลัก เมื่อคลิกที่ Root นั้น ๆ
เมื่อคลิกที่ Node สามารถสร้าง Event Handler เพื่อทำงานตามเงื่อนไขต่าง ๆ ได้
Example 3 สร้าง Node ย่อยเข้าไปอีก 1 ชั้นจาก Root ของ Tree
MyForm.java
package com.java.myapp;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
public class MyForm extends JFrame {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm frame = new MyForm();
frame.setVisible(true);
}
});
}
/**
* Create the frame.
*/
public MyForm() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 362, 249);
setTitle("ThaiCreate.Com Java GUI Tutorial");
getContentPane().setLayout(null);
// Root
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode("Root");
// Item 1
DefaultMutableTreeNode item1 = new DefaultMutableTreeNode("Item 1");
item1.add(new DefaultMutableTreeNode("Item 1 - 1"));
item1.add(new DefaultMutableTreeNode("Item 1 - 2"));
item1.add(new DefaultMutableTreeNode("Item 1 - 3"));
item1.add(new DefaultMutableTreeNode("Item 1 - 4"));
// Item 2
DefaultMutableTreeNode item2 = new DefaultMutableTreeNode("Item 2");
item2.add(new DefaultMutableTreeNode("Item 2 - 1"));
item2.add(new DefaultMutableTreeNode("Item 2 - 2"));
item2.add(new DefaultMutableTreeNode("Item 2 - 3"));
item2.add(new DefaultMutableTreeNode("Item 2 - 4"));
// Item Sub 2
DefaultMutableTreeNode itemSub2 = new DefaultMutableTreeNode("Item 2");
itemSub2.add(new DefaultMutableTreeNode("Item Sub 2 - 1"));
itemSub2.add(new DefaultMutableTreeNode("Item Sub 2 - 2"));
// Add Item Node Item 1 & Item 2
treeRoot.add(item1);
treeRoot.add(item2);
item2.add(itemSub2);
// Tree
final JTree tree = new JTree(treeRoot);
tree.setBounds(28, 11, 209, 131);
// Scroll Pane
JScrollPane scroll = new JScrollPane();
scroll.setBounds(28, 11, 209, 169);
// Image Icon
ImageIcon imageIcon = new ImageIcon(getClass().getResource("open.gif"));
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setLeafIcon(imageIcon);
tree.setCellRenderer(renderer);
tree.setShowsRootHandles(true);
tree.setRootVisible(false);
// Add Scroll and Tree
scroll.setViewportView(tree);
getContentPane().add(scroll);
// Selected
tree.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
JOptionPane.showMessageDialog(null, selectedNode
.getUserObject().toString());
}
});
}
}
Output
แสดง Node ย่อยลงมาอีก 1 ครั้ง
Property & Method (Others Related) |
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2013-09-03 22:06:43 /
2017-03-27 21:07:16 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|