62,614
社区成员
发帖
与我相关
我的任务
分享
package com.bvtc.mdi.window;
import java.awt.BorderLayout;
/**
*
* @author wangjing 该类是主窗口
*
*/
public class IndexWindow extends JFrame {
/**
* 构造方法
*
* @param loginWindow
* 登录窗口
*
* 初始化主窗口
*/
public IndexWindow() {
// 设置窗口标题
this.setTitle("MySql Data Insert");
// 获取窗口左上角显示图标
BufferedImage iconImage = null;
try {
iconImage = ImageIO.read(IndexWindow.class.getClassLoader()
.getResource("image/icon.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
// 设置窗口的左上角图标
this.setIconImage(iconImage);
// 设置窗口大小和位置
this.setBounds(200, 100, 800, 600);
// 设置窗口打开时最大化,这样设置之后打开后窗口是最大化,按缩小就会缩小到setBounds的设置参数
// this.setExtendedState(JFrame.MAXIMIZED_BOTH);
// 设置窗口不可大小改变
// this.setResizable(false);
// 将布局管理器设置为空
getContentPane().setLayout(null);
// 调用构建菜单方法
createMenu();
// 调用构建工具栏方法
createToolBar();
// 调用构建左右下面板的方法
createPanel();
// 设置窗口可见
this.setVisible(true);
// 增加关闭事件
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
e.getWindow().setVisible(false);
System.exit(0);
}
});
// this.getContentPane().setBackground(Color.BLACK);
}
// 创建登录窗口的引用
LoginWindow loginWindow = null;
// 创建菜单栏
JMenuBar mnb = null;
// 创建菜单
JMenu mnuFile = null;
// 创建菜单栏项
JMenuItem mniNew = null;
JMenuItem mniQuit = null;
// 创建工具栏
JToolBar jToolBar = null;
// 创建工具栏中的显示登录窗口的按钮
JButton btnLogin = null;
//创建工具栏中的开始插入数据按钮
JButton btnInsertDate = null;
// 创建左面板、右面板的引用
JPanel leftWindow = null;
JPanel rightWindow = null;
// 创建左面板中树的引用
JTree tree = null;
// 创建右上面板和右下面板的引用
JPanel rightUpWindow = null;
JPanel rightDownWindow = null;
/**
*
* @param loginWindow
* 登录窗口 该方法用于设置登录窗口
*/
public void setLoginWindow(LoginWindow loginWindow) {
this.loginWindow = loginWindow;
}
/**
* 该方法用于构建窗口中的菜单
*/
private void createMenu() {
// 初始化菜单栏
mnb = new JMenuBar();
// 初始化菜单
mnuFile = new JMenu("文件");
// 初始化菜单项
mniNew = new JMenuItem("新建项目");
mniQuit = new JMenuItem("退出");
// 将菜单项添加到菜单中
mnuFile.add(mniNew);
mnuFile.add(mniQuit);
// 将菜单添加到菜单栏中
mnb.add(mnuFile);
// 将菜单栏挂靠在框架上
this.setJMenuBar(mnb);
/**
* 单击新建项目菜单触发
*/
mniNew.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 显示登陆窗口
loginWindow.setVisible(true);
}
});
}
/**
* 该方法用于构建窗口中的工具栏
*/
private void createToolBar() {
// 初始化工具栏
jToolBar = new JToolBar();
// 设置工具栏的位置
jToolBar.setBounds(0, 0, 794, 38);
// 将工具栏添加到主窗口中
getContentPane().add(jToolBar);
// 初始化新建项目按钮
btnLogin = new JButton("\u65B0\u5EFA\u9879\u76EE");
//初始化开始插入数据按钮
btnInsertDate = new JButton("\u5F00\u59CB\u63D2\u5165\u6570\u636E");
/**
* 单击新建项目按钮触发的事件
*/
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 显示登陆窗口
loginWindow.setVisible(true);
}
});
/**
* 单价开始插入数据按钮触发的事件
*/
btnInsertDate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
// 将新建项目按钮添加到工具栏
jToolBar.add(btnLogin);
//将开始插入数据按钮添加到工具栏
jToolBar.add(btnInsertDate);
}
/**
* 该方法用于初始化左右下面板
*/
public void createPanel() {
/*
* //初始化左面板 leftWindow = new LeftWindow(); //调用左面板的显示方法
* leftWindow.showMethod(); //将左面板添加到主窗口
* getContentPane().add(leftWindow);
*
* JPanel panel = new JPanel(); leftWindow.add(panel); //初始化右面板
* rightWindow = new RightWindow(); //调用右面板的显示方法
* rightWindow.showMethod(); //将右面板添加到主窗口
* getContentPane().add(rightWindow);
*/
// 初始化左面板
leftWindow = new JPanel();
// 设置左面板位置
leftWindow.setBounds(10, 48, 293, 482);
// 将左面板添加到主窗口
getContentPane().add(leftWindow);
// 初始化右面板
rightWindow = new JPanel();
// 设置右面板位置
rightWindow.setBounds(313, 48, 461, 482);
// 将右面板添加到主窗口中
getContentPane().add(rightWindow);
//设置颜色,以后删掉
leftWindow.setBackground(Color.red);
rightWindow.setBackground(Color.pink);
// 设置右面板的布局管理器为空
rightWindow.setLayout(null);
// 初始化右上面板
rightUpWindow = new JPanel();
// 设置右上面板的位置
rightUpWindow.setBounds(10, 10, 441, 149);
//测试方法,一会删掉
//testMethod();
// 将右上面板添加到右面板
rightWindow.add(rightUpWindow);
// 初始化右下面板
rightDownWindow = new JPanel();
// 设置右下面板的位置
rightDownWindow.setBounds(10, 169, 441, 303);
// 将右下面板添加到右面板
rightWindow.add(rightDownWindow);
//设置颜色,以后删掉
rightUpWindow.setBackground(Color.BLACK);
rightDownWindow.setBackground(Color.yellow);
}
/**
* 本方法用来测试不用点击登陆方式直接放置一个JTree是否显示,结果是显示的!
*/
private void testMethod() {
DefaultMutableTreeNode color = new DefaultMutableTreeNode("Color", true);
/* DefaultMutableTreeNode gray = new DefaultMutableTreeNode("Gray");
color.add(gray);
color.add(new DefaultMutableTreeNode("Red"));
gray.add(new DefaultMutableTreeNode("Lightgray"));
gray.add(new DefaultMutableTreeNode("Darkgray"));
color.add(new DefaultMutableTreeNode("Green"));*/
JTree example5 = new JTree(color);
leftWindow.add(new JScrollPane(example5));
}
/**
*
* @param database
* 数据库名
* 该方法用于创建左面板中的树
* 该方法是由登录窗口登录完成后调用的
*/
public void createTree(String database) {
//初始化根节点
DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(database,true);
System.out.println("到底调用方法了么");
//初始化树
tree = new JTree(treeNode);
tree.setBackground(Color.BLACK);
//将树添加到左面板,JTree必须放在JScrollPane里面
leftWindow.add(new JScrollPane(tree));
}
}
awt和swing混用。会引发异常的
package com.bvtc.mdi.window;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
import com.bvtc.mdi.dao.LoginDao;
/**
*
* @author wangjing
* 该类是登录窗口
*
*/
public class LoginWindow extends JDialog {
/**
*
* @param frame 指定Frame
* @param title 指定标题
* @param model 是否model
*/
public LoginWindow(Frame frame, String title, boolean model) {
super(frame,title,model);
//初始化父窗口的引用
iw = (IndexWindow) frame;
//调用登录窗口的showMethod方法显示登录窗口
showMethod();
}
//创建父窗口的引用
IndexWindow iw = null;
//创建操作数据库的Dao类的对象的引用
LoginDao loginDao = null;
//拿到登陆窗口的组件容器
Container container = this.getContentPane();
//定义server、database、username、pssword文本显示区域
JLabel jlServer = null;
JLabel jlDataBase= null;
JLabel jlUserName = null;
JLabel jlPassword = null;
//定义server、database、username、pssword输入区域
JTextField jtfServer = null;
JTextField jtfDataBase = null;
JTextField jtfUserName = null;
JTextField jtfPassword = null;
//定义确定按钮和退出按钮
JButton jbSubmit = null;
JButton jbCancel = null;
/**
* 该方法是显示登录窗口的方法
*/
public void showMethod() {
//设置窗口大小
this.setSize(300, 500);
//调用该方法初始化登陆窗口中的控件并添加到登陆窗口中
buildControl();
//给确定按钮和取消按钮绑定事件
event();
//调用该方法将窗口显示到屏幕中间
showInMiddle();
//将窗口模式化
this.setModal(true);
this.setVisible(true);
}
/**
* 该方法是处理确定按钮和取消按钮的事件类
*/
private void event() {
//处理取消按钮事件
jbCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//调用本方法隐藏窗口
hideWindow();
}
});
//处理确定按钮事件
jbSubmit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//定义用来存放server、datsbase、username、pssword值的变量
String server = null;
String database = null;
String userName = null;
String password = null;
//给server、database、username、pssword变量赋值
server = jtfServer.getText();
database = jtfDataBase.getText();
userName = jtfUserName.getText();
password = jtfPassword.getText();
//初始化loginDao对象
loginDao = new LoginDao(server, database, userName, password);
//如果可以连接上数据库,隐藏登陆窗口
if(loginDao.validate()!=false) {
hideWindow();
}else {//如果连接不上,弹出报错窗口
}
iw.createTree(database);
}
});
}
/**
* 该方法用于隐藏窗口
*/
private void hideWindow() {
this.setVisible(false);
}
/**
* 该方法用于构建登陆窗口中的控件
* 将控件初始化并添加到登陆窗口中
*/
private void buildControl() {
//设置窗口的布局管理器为null
this.setLayout(null);
//初始化确定按钮和取消按钮
jbSubmit = new JButton("确定");
jbCancel = new JButton("取消");
//初始化server、database、username、pssword文本显示区域
jlServer = new JLabel("server");
jlDataBase = new JLabel("database");
jlUserName = new JLabel("username");
jlPassword = new JLabel("password");
//初始化server、database、username、pssword输入区域
jtfServer = new JTextField();
jtfDataBase = new JTextField();
jtfUserName = new JTextField();
jtfPassword = new JTextField();
//设置确定按钮和取消按钮的位置和大小
jbSubmit.setBounds(130, 400, 60, 30);
//设置按钮的颜色
jbSubmit.setBackground(new Color(1,169,219));
//要想按钮的颜色显示出来必须将不透明设置为true
jbSubmit.setOpaque(true);
jbCancel.setBounds(200, 400, 60, 30);
jbCancel.setBackground(new Color(1,169,219));
jbCancel.setOpaque(true);
//设置server、database、username、pssword文本显示区域的位置和大小
jlServer.setBounds(40, 40, 70, 30);
jlDataBase.setBounds(40, 130, 70, 30);
jlUserName.setBounds(40, 220, 70, 30);
jlPassword.setBounds(40, 310, 70, 30);
//设置server、database、username、pssword输入区域的位置和大小
jtfServer.setBounds(130, 40, 120, 30);
jtfDataBase.setBounds(130, 130, 120, 30);
jtfUserName.setBounds(130, 220, 120, 30);
jtfPassword.setBounds(130, 310, 120, 30);
//将控件添加到登陆窗口中
container.add(jbSubmit);
container.add(jbCancel);
container.add(jlServer);
container.add(jlDataBase);
container.add(jlUserName);
container.add(jlPassword);
container.add(jtfServer);
container.add(jtfDataBase);
container.add(jtfUserName);
container.add(jtfPassword);
}
/**
* 该方法是将登录窗口显示到屏幕中间的方法
*/
private void showInMiddle() {
//获取屏幕大小
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
//获取JDialog的大小
Dimension frameSize = this.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
}
}
package com.bvtc.test;
import com.bvtc.mdi.window.IndexWindow;
import com.bvtc.mdi.window.LoginWindow;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//创建主窗口的引用
IndexWindow iw = new IndexWindow();
// 创建并初始化登录窗口
LoginWindow loginWindow = new LoginWindow(iw,"Project Configuration",true);
iw.setLoginWindow(loginWindow);
}
}
package com.bvtc.mdi.dao;
import com.bvtc.mdi.db.DB;
/**
*
* @author wangjing
* 该类是登陆窗口操作数据库的dao类
*/
public class LoginDao {
// 定义用来接收server、database、username、pssword值的变量
String server = null;
String database = null;
String userName = null;
String password = null;
//创建数据库操作类对象
DB db = new DB();
/**
*
* @param server
* 服务器
* @param database
* 数据库
* @param userName
* 用户名
* @param password
* 密码
*/
public LoginDao(String server, String database, String userName, String password) {
super();
this.server = server;
this.database = database;
this.userName = userName;
this.password = password;
}
public boolean validate() {
return db.connect(server, database, userName, password);
}
}
package com.bvtc.mdi.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author wangjing
* 该类是用于操作数据库的类
*/
public class DB {
Connection conn = null;
/**
*
* @param server
* @param database
* @param userName
* @param password
* 该方法是连接数据库的方法
*/
public boolean connect(String server, String database, String userName,
String password) {
//拼接url
String url = "jdbc:mysql://"+server+":3306/"+database;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, userName, password);
return true;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return false;
}
}
此外还有一个mysql连接JDBC的jar包没上传
求大神们指点啊