📄 tablequeryframe.java
字号:
package JavaDatabaseBible.part2;
import java.awt.*;
import java.awt.event.*;
import java.util.EventObject;
import java.util.EventListener;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
/**
* TableQueryFrame extends JInternalFrame to create a
* display which builds SQL CREATE statements
* <p/>
* TableBuilder, which extends JTable, is a key component.
*/
class TableQueryFrame extends JInternalFrame{
protected JTable table;
protected JScrollPane tableScroller;
protected JTextArea SQLPane = new JTextArea();
protected JButton queryButton = new JButton("Execute Query");
protected DatabaseUtilities dbUtils;
protected String tableName = null;
protected String colNames[] = null;
protected String dataTypes[] = null;
protected String SQLQuery = null;
protected String SQLCommandRoot = "";
public TableQueryFrame(String tableName, DatabaseUtilities dbUtils){
setLocation(0,0);
setClosable(true);
setMaximizable(true);
setIconifiable(true);
setResizable(true);
getContentPane().setLayout(new BorderLayout());
this.tableName=tableName;
this.dbUtils=dbUtils;
setTitle("Query "+tableName);
init();
setVisible(true);
}
// initialise the JInternalFrame
private void init(){
colNames = dbUtils.getColumnNames(tableName);
dataTypes = dbUtils.getDataTypes(tableName);
SQLQuery = "SELECT * FROM "+tableName;
System.out.println(SQLQuery);
Vector dataSet = dbUtils.executeQuery(SQLQuery);
System.out.println(dataSet.size());
table = createTable(colNames,dataSet);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
JScrollPane sqlScroller = new JScrollPane(SQLPane);
tableScroller = new JScrollPane(table);
JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT,sqlScroller,tableScroller);
splitter.setDividerLocation(100);
getContentPane().add(splitter,BorderLayout.CENTER);
getContentPane().add(queryButton,BorderLayout.SOUTH);
queryButton.addActionListener(new ButtonListener());
}
protected JTable createTable(String[] colNames,Vector dataSet){
int nRows = dataSet.size();
String[][] rowData = new String[nRows][colNames.length];
for(int i=0;i<nRows;i++){
Vector row = (Vector)dataSet.elementAt(i);
for(int j=0;j<row.size();j++)rowData[i][j]=((Object)row.elementAt(j)).toString();
}
JTable table = new JTable(rowData,colNames);
return table;
}
// Listener for the Query Button
class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent event){
SQLQuery = SQLPane.getText();
JViewport viewport = tableScroller.getViewport();
viewport.remove(table);
colNames = dbUtils.getColumnNamesUsingQuery(SQLQuery);
Vector dataSet = dbUtils.executeQuery(SQLQuery);
table = createTable(colNames,dataSet);
viewport.add(table);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -