package sql; /* JTree的构造函数: JTree() JTree(Hashtable value) JTree(Object[] value)//只有这个构造函数可以创建多个根结点 JTree(TreeModel newModel) JTree(TreeNode root) JTree(TreeNode root, boolean asksAllowsChildren) JTree(Vector value) */ import java.awt.BorderLayout; public class tableView extends JDialog implements ActionListener,TreeSelectionListener { /** * */ private final JPanel contentPanel = new JPanel(); private JTable table; private JScrollPane scrollPane; private JTextArea textArea = new JTextArea(); private JButton button = new JButton("执行"); private JTree tree ; private DefaultMutableTreeNode root =new DefaultMutableTreeNode(); private ResultsetTableModel rsModel = new ResultsetTableModel(); /** * Launch the application. */ public static void main(String[] args) { try { tableView dialog = new tableView(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } public void init(){ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); scrollPane = new JScrollPane(); table = new JTable(); } /** * Create the dialog. * @throws SQLException */ public tableView() throws SQLException { setBounds(100, 100, 577, 487); getContentPane().setLayout(null); init(); table.setBounds(30, 24, 329, 175); scrollPane.setBounds(47, 214, 294, 185); scrollPane.setViewportView(table); getContentPane().add(scrollPane); textArea.setWrapStyleWord(true); textArea.setRows(10); textArea.setBounds(66, 49, 275, 125); getContentPane().add(textArea); button.setBounds(156, 184, 93, 23); button.addActionListener(this); getContentPane().add(button); getTreeNodes(); JScrollPane scrollPane_1 = new JScrollPane(); scrollPane_1.setBounds(351, 77, 164, 326); getContentPane().add(scrollPane_1); tree = new JTree(root); scrollPane_1.setViewportView(tree); tree.addTreeSelectionListener(this); setVisible(true); } public void getRs () throws SQLException { sqlServerTest ss = new sqlServerTest(); String strSql=textArea.getText(); ResultSet rs =ss.excuteQurre(strSql); rsModel.SetResultSet(rs); table.setModel(rsModel); } private void getTreeNodes() { sqlServerTest ss= new sqlServerTest(); String strSql="select distinct sdept from student"; ResultSet rs = ss.excuteQurre(strSql); try { while(rs.next()) { String dept = rs.getString(1); DefaultMutableTreeNode deptNode = new DefaultMutableTreeNode(dept); ResultSet rs_dept= getStudents(dept); while(rs_dept.next()) { String strStu = rs_dept.getString("sname"); System.out.println(strStu); DefaultMutableTreeNode stuNode = new DefaultMutableTreeNode(strStu); deptNode.add(stuNode); } root.add(deptNode); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public ResultSet getStudents(String dept) { sqlServerTest ss= new sqlServerTest(); String strSql="select * from student where sdept='"+dept+"'" ; ResultSet rs = ss.excuteQurre(strSql); return rs; } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand().equals("执行")) { try { table.repaint(); getRs(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } @Override public void valueChanged(TreeSelectionEvent e) { // TODO Auto-generated method stub // System.out.println(e.getPaths()); JTree tree = (JTree) e.getSource(); // 利用JTree的getLastSelectedPathComponent()方法取得目前选取的节点. DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); String nodeName = selectionNode.toString(); System.out.println(nodeName); } } |