📄 metadataframe.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 + -