⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metadataframe.java

📁 java数据库编程源码
💻 JAVA
字号:
package JavaDatabaseBible.part2;

import java.awt.*;
import java.util.Hashtable;
import java.util.Vector;
import javax.swing.*;
import javax.swing.JTree;
import javax.swing.border.*;
import javax.swing.tree.*;

/**
* MetaDataFrame extends JInternalFrame to create a 
* display which builds SQL CREATE statements
* <p/>
* TableBuilder, which extends JTable, is a key component.
*/
class MetaDataFrame extends JInternalFrame{
  
  protected JTree tree;
	protected JScrollPane JTreeScroller = new JScrollPane();
  protected DatabaseUtilities dbUtils;
  protected String dbName;
  protected String[] tableTypes;
	protected JPanel JTreePanel = new JPanel();
	
  public MetaDataFrame(String dbName, DatabaseUtilities dbUtils){
    setLocation(0,0);
    setClosable(true);
    setMaximizable(true);
    setIconifiable(true);
    setResizable(true);
    getContentPane().setLayout(new BorderLayout());
    this.dbName=dbName;
    this.dbUtils=dbUtils;
    setTitle(dbName);
    init();
    setVisible(true);
  }

  // initialise the JInternalFrame
  private void init(){
		JTreePanel.setLayout(new BorderLayout(0,0));
		JTreePanel.setBackground(Color.white);
		JTreeScroller.setOpaque(true);
		JTreePanel.add(JTreeScroller,BorderLayout.CENTER);
    
	  DefaultTreeModel treeModel = createTreeModel(dbName);
		
		tree = new JTree(treeModel);
		tree.setBorder(new EmptyBorder(5,5,5,5));
		JTreeScroller.getViewport().add(tree);		
		JTreePanel.setVisible(true);
		JTreeScroller.setVisible(true);
		tree.setRootVisible(true);
		tree.setVisible(true);
		getContentPane().add(JTreePanel,BorderLayout.CENTER);
  }
	
	// Create a TreeModel using DefaultMutableTreeNodes
	protected DefaultTreeModel createTreeModel(String dbName){
	  DefaultMutableTreeNode treeRoot =  new DefaultMutableTreeNode(dbName);
    Vector tableTypes = dbUtils.getTableTypes();
    for(int i=0;i<tableTypes.size();i++){
	    DefaultMutableTreeNode tableTypeNode = new DefaultMutableTreeNode((String)tableTypes.elementAt(i));
	    treeRoot.add(tableTypeNode);
      String[] type = new String[]{(String)tableTypes.elementAt(i)};
      Vector tables = dbUtils.getTables(type);
      for(int j=0;j<tables.size();j++){
	      DefaultMutableTreeNode tableNode = new DefaultMutableTreeNode(tables.elementAt(j));
	      tableTypeNode.add(tableNode);
        Vector columns = dbUtils.getColumns((String)tables.elementAt(j));
        for(int k=0;k<columns.size();k++){
          Hashtable columnData = (Hashtable)columns.elementAt(k);
	        DefaultMutableTreeNode columnNode = new DefaultMutableTreeNode(columnData.get("COLUMN_NAME"));
	        columnNode.add(new DefaultMutableTreeNode("TYPE_NAME:   "+columnData.get("TYPE_NAME")));
	        columnNode.add(new DefaultMutableTreeNode("COLUMN_SIZE: "+columnData.get("COLUMN_SIZE")));
	        columnNode.add(new DefaultMutableTreeNode("IS_NULLABLE: "+columnData.get("IS_NULLABLE")));
	        tableNode.add(columnNode);
        }
      }
    }
	  return new DefaultTreeModel(treeRoot);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -