Saturday, December 11, 2010

Try to JTree

Time for us to play with JTree, and how to take the label of the JTree. We try to connect your with MySql database, and read all the databases, tables, and each column name.
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath;
import java.sql.*;
public class STree extends JFrame {
JTextField textField = new JTextField();
JScrollPane scrollPane = new JScrollPane();
JTree tree;
Rendere renderer = new Rendere();
private Connection conn;
DefaultMutableTreeNode root = new DefaultMutableTreeNode(
"root@localhost:3306");
public STree() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mysql", "root", "neoriz");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Error : " + ex.getMessage());
}
try {
Statement sDatabase = conn.createStatement();
ResultSet rsDatabase = sDatabase.executeQuery("SHOW DATABASES");
rsDatabase.beforeFirst();
while (rsDatabase.next()) {
DefaultMutableTreeNode nodeDatabase = new DefaultMutableTreeNode(
rsDatabase.getString(1));
root.add(nodeDatabase);
Statement sTable = conn.createStatement();
ResultSet rsTable = sTable.executeQuery("SHOW TABLES FROM "
+ rsDatabase.getString(1) + " ");
rsTable.beforeFirst();
while (rsTable.next()) {
DefaultMutableTreeNode nodeTable = new DefaultMutableTreeNode(
rsTable.getString(1));
nodeDatabase.add(nodeTable);
Statement sField = conn.createStatement();
ResultSet rsField = sField.executeQuery("SHOW FIELDS FROM "
+ rsDatabase.getString(1) + "."
+ rsTable.getString(1) + " ");
rsField.beforeFirst();
while (rsField.next()) {
DefaultMutableTreeNode nodeFields = new DefaultMutableTreeNode(
rsField.getString(1));
nodeTable.add(nodeFields);
}
}
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
tree = new JTree(root);
getContentPane().setLayout(new BorderLayout());
tree.setCellRenderer(renderer);
tree.addTreeSelectionListener(new TreeHandler());
scrollPane.getViewport().add(tree);
getContentPane().add("Center", scrollPane);
getContentPane().add("South", textField);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 500);
setVisible(true);
}
public static void main(String[] args) {
STree app = new STree();
}
public class TreeHandler implements TreeSelectionListener {
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getPath();
String text = path.getPathComponent(path.getPathCount() - 1)
.toString();
if (path.getPathCount() > 3) {
text += ": ";
text += Integer.toString((int) (Math.random() * 50)) + " Wins ";
text += Integer.toString((int) (Math.random() * 50))
+ " Losses";
}
textField.setText(text);
}
}
}
class Rendere extends JLabel implements TreeCellRenderer {
public Component getTreeCellRendererComponent(final JTree tree, final Object value,
final boolean selected, final boolean expanded, final boolean leaf, final int row,
final boolean hasFocus) {
setText(value.toString() + " ");
return this;
}
}
view raw JTreeNow hosted with ❤ by GitHub



Screen :

No comments:

Post a Comment