package com.itheima.frame;
import java.awt.Button;
import java.awt.Choice;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.SQLException;
import com.itheima.domain.DBConfig;
import com.itheima.domain.DBType;
import com.itheima.utils.DbConnnect;
import com.itheima.utils.XmlParser;
public class MainFrame {
private Frame mainframe;
private TextField driverField, urlField, nameField, pswdField;
private Choice dbChoice;
private Button login;
private DBConfig oldConfig;
private DBConfig newConfig;
private String dbType = DBType.MYSQL.name();
MainFrame() {
init();
}
public void init() {
// 文本框
driverField = new TextField(40);
urlField = new TextField(40);
nameField = new TextField(40);
pswdField = new TextField(40);
// 选择框
dbChoice = new Choice();
dbChoice.add(DBType.MYSQL.name());
dbChoice.add(DBType.ORACLE.name());
dbChoice.add(DBType.SQLSERVER.name());
dbChoice.add(DBType.DB2.name());
// 登录按钮
login = new Button("Login-->>");
mainframe = new Frame("Table2JavaBean");
mainframe.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5));
mainframe.setBounds(480, 220, 460, 220);
mainframe.add(new Label("DRIVER:", Label.RIGHT));
mainframe.add(driverField);
mainframe.add(new Label("URL:", Label.RIGHT));
mainframe.add(urlField);
mainframe.add(new Label("USERNAME:", Label.RIGHT));
mainframe.add(nameField);
mainframe.add(new Label("PASSWORD:", Label.RIGHT));
mainframe.add(pswdField);
mainframe.add(new Label("DBChoice:", Label.RIGHT));
mainframe.add(dbChoice);
mainframe.add(login);
mainframe.setVisible(true);
// 设置文本框内容字体
Font font = new Font("黑体", Font.PLAIN, 15);
driverField.setFont(font);
urlField.setFont(font);
nameField.setFont(font);
pswdField.setFont(font);
// 初始化表单内容为mysql配置信息
setFieldText(DBType.MYSQL.name());
myEvent();
}
public void myEvent() {
mainframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
login(dbType);
}
});
dbChoice.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
dbType = dbChoice.getSelectedItem();
if ("SQLSERVER,DB2".contains(dbType)) {
String lable = dbType + " 暂不支持";
new Message().alert(lable);
// 信息重置为mysql
dbChoice.select(0);
dbType = DBType.MYSQL.name();
setFieldText(DBType.MYSQL.name());
return;
}
setFieldText(dbType);
}
});
}
// 连接登录数据库
public void login(String dbType) {
newConfig = getFieldText();
try {
DbConnnect.loadDriver(newConfig.getDRIVER());
try {
Connection conn = DbConnnect.getConnnection(newConfig.getURL(), newConfig.getUSERNAME(),
newConfig.getPASSWORD());
// 如果用户修改登录信息则更新配置文件,以便下次记住用户配置
if (!oldConfig.equals(newConfig)) {
XmlParser.updateConfig(newConfig, dbType);
}
String dbName = newConfig.getDBName();
new TableFrame(conn, DBType.valueOf(dbType), dbName);
mainframe.setVisible(false);
} catch (SQLException e) {
new Message().alert("数据库连接失败");
} catch (Exception e) {
new Message().alert("软件内部错误,请联系作者");
}
} catch (ClassNotFoundException e) {
new Message().alert("数据库驱动加载失败");
}
}
/**
*
* @方法名称:setFieldText
* @描述: 将从xml文件中读取出来的信息赋给文本框,并返回旧的数据库配置信息
* @创建人:LiZhimin
* @创建时间:2013-7-17 上午10:43:38
* @param dbType
* @返回类型:void
* @version V1.0
*/
public DBConfig setFieldText(String dbType) {
try {
oldConfig = XmlParser.getConfig(dbType);
driverField.setText(oldConfig.getDRIVER());
urlField.setText(oldConfig.getURL());
nameField.setText(oldConfig.getUSERNAME());
pswdField.setText(oldConfig.getPASSWORD());
return oldConfig;
} catch (Exception e) {
new Message().alert("软件内部错误,请联系作者");
}
return null;
}
// 获取用户输入的信息
public DBConfig getFieldText() {
newConfig = new DBConfig();
newConfig.setDRIVER(driverField.getText());
newConfig.setURL(urlField.getText());
newConfig.setUSERNAME(nameField.getText());
newConfig.setPASSWORD(pswdField.getText());
return newConfig;
}
// 启动软件
public static void main(String[] args) {
new MainFrame();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论


















收起资源包目录






















































共 35 条
- 1
资源评论

- robin70072017-05-05不好,不值10分!!
- wzhan123452013-09-18用不了 也没什么提示
AndSync
- 粉丝: 11
- 资源: 4

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
