📄 internalframe.java
字号:
package com.jimw.mysqlplus;
import java.util.HashSet;
import java.util.HashMap;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
public class InternalFrame extends JInternalFrame {
static int openFrameCount = 0;
static final int xOffset = 30, yOffset = 30;
private HashSet commandSet;
int currFrameNumber = 0;
private MyTextPane editArea;
private JDBCAdapter dataBase;
private TableSorter sorter;
private String title;
private JTabbedPane tabbedPane;
private JTextArea msgArea;
private MySqlPlusFrame frame;
public InternalFrame(MySqlPlusFrame frame) {
super("",
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable
this.frame = frame;
showConnectionDlg(frame.getCfgMap());
if (dataBase == null || !dataBase.isOpen())
return ;
currFrameNumber = ++openFrameCount;
setTitle(title);
//...Then set the window size or call pack...
setSize(300,300);
//Set the window's location.
setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
initialize();
this.addInternalFrameListener(new MyFrameAdapter());
commandSet = new HashSet();
}
public boolean isOpen() {
if (dataBase != null && dataBase.isOpen())
return true;
else
return false;
}
private void showConnectionDlg(HashMap cfgMap) {
ConnectionDialog connDlg = new ConnectionDialog(cfgMap);
dataBase = connDlg.show();
if (dataBase != null) {
title = connDlg.getAlias();
}
}
private void initialize() {
JPanel contentPanel = new JPanel();
editArea = new MyTextPane();
JScrollPane editScrollPane = new JScrollPane(editArea);
tabbedPane = new JTabbedPane();
msgArea = new JTextArea();
msgArea.setEditable(false);
JScrollPane msgScrollPane = new JScrollPane(msgArea);
JScrollPane scrollPane = createTable();
tabbedPane.add("Message",msgScrollPane);
tabbedPane.add("Result",scrollPane);
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
editScrollPane, tabbedPane);
splitPane.setOneTouchExpandable(true);
splitPane.setDividerLocation(150);
setContentPane(splitPane);
}
public JScrollPane createTable() {
sorter = new TableSorter();
// Create the table
JTable table = new JTable(sorter);
// Use a scrollbar, in case there are many columns.
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// Install a mouse listener in the TableHeader as the sorter UI.
sorter.addMouseListenerToHeaderInTable(table);
sorter.setModel(dataBase);
JScrollPane scrollpane = new JScrollPane(table);
return scrollpane;
}
public Document getTextDocument() {
return editArea.getDocument();
}
public void setAutoCommit() {
dataBase.setAutoCommit();
}
public boolean getAutoCommitflag() {
return dataBase.getAutoCommitflag();
}
public void executeQuery() {
String query = editArea.getSelectedText();
if (query == null)
query = editArea.getText();
if (query == null)
return;
query = query.trim();
if (query.equals("")) return;
long t = System.currentTimeMillis();
if (dataBase.execute(query)) {
msgArea.setText("Success...\n"+dataBase.getErrorMessage()+"\nThe total times of query is:" + (System.currentTimeMillis() - t) + "ms ");
tabbedPane.setSelectedIndex(1);
} else {
msgArea.setText(dataBase.getErrorMessage());
tabbedPane.setSelectedIndex(0);
}
commandSet.add(query); //put this command into history command list.
}
public void addCommand(String str) {
editArea.insertString(str);
}
public void quit() {
try {
if ( dataBase != null)
dataBase.close();
frame.removeWindow(currFrameNumber);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public HashSet getCommandList() {
return commandSet;
}
class MyFrameAdapter extends InternalFrameAdapter {
public void internalFrameClosing(InternalFrameEvent e) {
quit();
frame.setButtonEnable();
}
public void internalFrameActivated(InternalFrameEvent e) {
frame.setActiveWindow(currFrameNumber);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -