📄 frameofdict.java~31~
字号:
package datadictionary;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.SQLException;
import java.util.EventObject;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.*;
import java.awt.GridLayout;
import java.awt.Dimension;
////////////////////////////////////////////////////////////////////////////////
public class FrameOfDict extends JFrame {
private DataDictionary dict = new DataDictionary();
private String fileName = " ";
private JMenuBar menuBar;
private JMenu menu;
private JMenuItem menuItem;
private JTable table01,table02;
private JPanel panel;
private JScrollPane scrollPanel01,scrollPanel02;
private int rowBeSelected01 = 0;//记录table01中当前被选择的行数
private int rowBeSelected02 = 0;//记录table02中当前被选择的行数
private JTextField textField01 = null;
private JTextField textField02 = null;
private JTextField textField03 = null;
private JTextField textField04 = null;
private JTextField textField05 = null;
private JTextField textField06 = null;
private JTextField textField07 = null;
/**
*数据字典的界面部分,显示一个Frame组件。
*其中主要包括显示表名的List组件和显示字段属性的Table组件。
*/
public FrameOfDict() {
super("数据字典");
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
panel = new JPanel();//创建panel,容纳table01及table02
panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
scrollPanel01 = new JScrollPane();
scrollPanel02 = new JScrollPane();
scrollPanel01.getPreferredSize();
scrollPanel02.getPreferredSize();
panel.add(scrollPanel01);
panel.add(scrollPanel02);
showMenu();
add(panel);
pack();
setSize(650,240);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
/**
*显示菜单,并主要实现菜单的各项功能。
*字典功能的主要部分。
*/
public void showMenu() {
menuBar = new JMenuBar();
//----------------------------------------------------------------------
menu = new JMenu("文件");
//----------------------------
menuItem = new JMenuItem("打开",KeyEvent.VK_T);
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFrame subframe = new JFrame();
JOptionPane optionPane = new JOptionPane();
if(fileName != " ") {
Vector columnNameOfTables = new Vector();//创建左边的table01
columnNameOfTables.addElement("表名");
columnNameOfTables.addElement("注释");
columnNameOfTables.addElement("表类型");
columnNameOfTables.addElement("主键名");
Vector indexOfTables = dict.collectTable(fileName);
table01 = new JTable(indexOfTables,columnNameOfTables);
table01.setAutoResizeMode(0);
TableColumn column = null;//设置列宽度
column = table01.getColumnModel().getColumn(0);
column.setPreferredWidth(120);
column = table01.getColumnModel().getColumn(1);
column.setPreferredWidth(120);
column = table01.getColumnModel().getColumn(2);
column.setPreferredWidth(100);
column = table01.getColumnModel().getColumn(3);
column.setPreferredWidth(140);
column = table01.getColumnModel().getColumn(0);//禁止用户修改第一列
column.setCellEditor(new TableCellEditor () {
public Object getCellEditorValue() {
return null;
}
public boolean isCellEditable(EventObject anEvent) {
return false;
}
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}
public boolean stopCellEditing() {
return false;
}
public void cancelCellEditing() {
}
public void addCellEditorListener(CellEditorListener l) {
}
public void removeCellEditorListener(CellEditorListener l) {
}
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
return null;
}
});
scrollPanel01.getViewport().setView(table01);
table01.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel rowSM = table01.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int row = table01.getSelectedRow();
rowBeSelected01 = row;
String tableName = table01.getValueAt(row,0).toString();
showAttributesInTable02(tableName);
repaint();
}
});
table01.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
if(column == 1){
TableModel model = (TableModel) e.getSource();
String commentValue = model.getValueAt(row, column).
toString();
String tableName = model.getValueAt(row, 0).
toString();
dict.setTableComment(fileName,tableName,commentValue);
}
}
});
return;
}
/*
String fileNameTemp = (String)optionPane.showInputDialog(subframe,
"输入所要打开文档的名字:",
"打开文档",
JOptionPane.QUESTION_MESSAGE);
*/
String fileNameTemp = " ";
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
////////////////////////////////////////////////////////////
fileChooser.setAcceptAllFileFilterUsed(false);
fileChooser.addChoosableFileFilter(new XMLFilter());
//////////////////////////////////////////////////////////////
int returnVal = fileChooser.showOpenDialog(subframe);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
fileNameTemp = file.getName();
}
boolean isStringEmpty = true;
int c = 0;
if(fileNameTemp != null)//用以判断输入的名字是否为空
while(c < fileNameTemp.length()) {
if(fileNameTemp.charAt(c) != ' ')
isStringEmpty = false;
c++;
}
if(fileNameTemp == null||isStringEmpty) {//名字为空则退出打开文档的过程
JOptionPane.showMessageDialog(subframe, "文档名字不能为空!");
return;
}
//////////////////////////=====================;;
//fileNameTemp = "exam.xml";//测试用
////////////////========////////===================9
Vector columnNameOfTables = new Vector();//创建左边的table01
columnNameOfTables.addElement("表名");
columnNameOfTables.addElement("注释");
columnNameOfTables.addElement("表类型");
columnNameOfTables.addElement("主键名");
Vector indexOfTables = dict.collectTable(fileNameTemp);
if(indexOfTables != null)
fileName = fileNameTemp;
table01 = new JTable(indexOfTables,columnNameOfTables);
table01.setAutoResizeMode(0);
TableColumn column = null;//设置列宽度
column = table01.getColumnModel().getColumn(0);
column.setPreferredWidth(120);
column = table01.getColumnModel().getColumn(1);
column.setPreferredWidth(120);
column = table01.getColumnModel().getColumn(2);
column.setPreferredWidth(100);
column = table01.getColumnModel().getColumn(3);
column.setPreferredWidth(140);
column = table01.getColumnModel().getColumn(0);//禁止用户修改第一列
column.setCellEditor(new TableCellEditor () {
public Object getCellEditorValue() {
return null;
}
public boolean isCellEditable(EventObject anEvent) {
return false;
}
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}
public boolean stopCellEditing() {
return false;
}
public void cancelCellEditing() {
}
public void addCellEditorListener(CellEditorListener l) {
}
public void removeCellEditorListener(CellEditorListener l) {
}
public Component getTableCellEditorComponent(JTable table,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -