swing数据库管理工具

package com.org.system.login;

import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


/**
 * 登录页面
 */
public class LoginFrame extends JFrame implements ActionListener, ItemListener {
 
 private JComboBox dbDriver;// DB数据库方言下拉列表
 private JComboBox dbURL;// DB数据库连接字符串下拉列表
 private JTextField ipTF;//IP地址
 private JTextField duankouTF;//IP地址
 private JTextField dbnam;//数据库名称
 private JTextField dbnamTF;//数据库账号
 private JPasswordField passwordTF;//数据库密码
 private JButton loginButton = null, resetButton = null;
 
 private String dbnames = null, passwordname = null, urlname = null,drivername = null ,duankouname = null
         ,dbusernames = null ,dbipname = null;
 
 private static String udrivername="com.microsoft.sqlserver.jdbc.SQLServerDriver";
 
 public LoginFrame() {
  super();
  Image img=getToolkit().createImage("image/tols.jpg");
  //设置窗体的图标
  setIconImage(img);
  getContentPane().setLayout(null);
  jFrameValidate();
  setTitle("DB数据库");
  JLabel backgroundLabel = new JLabel();
  backgroundLabel.setBounds(0, 0, 768, 540);
  backgroundLabel.setText("<html><img width=776 height=574 src='"
    + this.getClass().getResource("login1.jpg") + "'></html>");
//  backgroundLabel.setText("<html><img width=776 height=574 src='"
//    + System.getProperty("user.dir")+"/image/login1.jpg" + "'></html>");
  backgroundLabel.setLayout(null);
  
  final JLabel dbDriverLable = new JLabel();
  dbDriverLable.setText("DB数据库方言:");
  dbDriverLable.setBounds(180, 153, 100, 18);
  backgroundLabel.add(dbDriverLable);
  
  final JLabel dbURLLabel = new JLabel();
  dbURLLabel.setText("DB连接字符串:");
  dbURLLabel.setBounds(180, 193, 100, 18);
  backgroundLabel.add(dbURLLabel);
  
  final JLabel dbLabel = new JLabel();
  dbLabel.setText("DB数据库名称:");
  dbLabel.setBounds(180, 233, 100, 18);
  backgroundLabel.add(dbLabel);
  
  final JLabel dbnameLabel = new JLabel();
  dbnameLabel.setText("DB数据库账号:");
  dbnameLabel.setBounds(180, 273, 100, 18);
  backgroundLabel.add(dbnameLabel);
  
  final JLabel dbpasswordLable = new JLabel();
  dbpasswordLable.setText("DB数据库密码:");
  dbpasswordLable.setBounds(180, 313, 100, 18);
  backgroundLabel.add(dbpasswordLable);
  
  // DB数据库方言列表
  String[] dbDriverAdd = { "oracle.jdbc.driver.OracleDriver",
                     "com.ibm.db2.jdbc.app.DB2Driver",
                     "(sql 2000)com.microsoft.sqlserver.jdbc.SQLServerDriver",
                     "(sql 2005or2008)com.microsoft.sqlserver.jdbc.SQLServerDriver",
                     "com.sybase.jdbc.SybDriver",
                     "com.informix.jdbc.IfxDriver",
                     "com.mysql.jdbc.Driver",
                     "org.postgresql.Driver"};
  dbDriver = new JComboBox(dbDriverAdd);
  dbDriver.setSelectedIndex(0);
  dbDriver.setEditable(false);
  dbDriver.addItemListener(this);
  //335, 203 坐标位置   280, 22 长宽
  dbDriver.setBounds(270, 153, 300, 22);
  backgroundLabel.add(dbDriver);
  
  // DB数据库连接字符串列表
  /*
   * "jdbc:oracle:thin:@localhost:1521:orcl",
         "jdbc:db2://localhost:5000/sample",
                  "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db2",
                  "jdbc:sqlserver://localhost:1433;DatabaseName=db2",
                  "jdbc:sybase:Tds:localhost:5007/myDB",
                  "jdbc:informix-sqli://123.45.67.89:1533/myDB",
                  "jdbc:mysql://localhost:3306/myDB",
                  "jdbc:postgresql://localhost/myDB"
   */
  String[] dbURLAdd = { "jdbc:oracle:thin:@",
         "jdbc:db2://",
                  "jdbc:microsoft:sqlserver://",
                  "jdbc:sqlserver://",
                  "jdbc:sybase:Tds:",
                  "jdbc:informix-sqli://",
                  "jdbc:mysql://",
                  "jdbc:postgresql://"};
  dbURL = new JComboBox(dbURLAdd);
  dbURL.setSelectedIndex(0);
  dbURL.addItemListener(this);
  //禁止操作
  dbURL.setEditable(false);
  dbURL.setEnabled(false);
  dbURL.setBounds(270, 193, 150, 22);
  backgroundLabel.add(dbURL);
  
  ipTF = new JTextField();
  ipTF.setBounds(422, 193, 80, 22);
  backgroundLabel.add(ipTF);
  
  final JLabel nameLabel = new JLabel();
  nameLabel.setText(":");
  //设置字体 “dialog”代表字体,1代表样式(1是粗体,0是平常的)15是字号
  nameLabel.setFont(new java.awt.Font("Dialog",1,15));
  nameLabel.setBounds(505, 193, 100, 22);
  backgroundLabel.add(nameLabel);
  
  duankouTF = new JTextField();
  duankouTF.setBounds(510, 193, 50, 22);
  backgroundLabel.add(duankouTF);
  
  dbnam = new JTextField();
  dbnam.setBounds(270, 233, 300, 22);
  backgroundLabel.add(dbnam);
  
  dbnamTF = new JTextField();
  dbnamTF.setBounds(270, 273, 300, 22);
  backgroundLabel.add(dbnamTF);
  
  passwordTF = new JPasswordField();
  passwordTF.setBounds(270, 313, 300, 22);
  backgroundLabel.add(passwordTF);
  
  loginButton = new JButton("登录");
  resetButton = new JButton("重置");
  backgroundLabel.add(loginButton);
  backgroundLabel.add(resetButton);
  loginButton.setBounds(280, 360, 80, 30);
  resetButton.setBounds(400, 360, 80, 30);
  loginButton.addActionListener(this);
  resetButton.addActionListener(this);
  
  getContentPane().add(backgroundLabel);
  
 }
 public void jFrameValidate() {
  Toolkit tk = getToolkit();// 获得屏幕的宽和高
  Dimension dim = tk.getScreenSize();
  this.setResizable(false);
  this.setBounds(dim.width / 2 - 380, dim.height / 2 - 270, 776, 574);
  validate();
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
 // 下拉列表改变时的事件处理
 public void itemStateChanged(ItemEvent e) {
  if (e.getSource() == dbDriver) {
   if (e.getStateChange() == ItemEvent.SELECTED
     && dbDriver.getSelectedIndex() != -1)
    dbURL.setSelectedIndex(dbDriver.getSelectedIndex());
  } else if (e.getSource() == dbURL) {
   if (e.getStateChange() == ItemEvent.SELECTED
     && dbURL.getSelectedIndex() != -1)
    dbURL.setSelectedIndex(dbURL.getSelectedIndex());
  }

 }
 // 登录 和重置事件的处理
 public void actionPerformed(ActionEvent e) {
  if (e.getSource() == loginButton) {// 登录
   getValues();// 得到界面中的所有项的值
   checkUser();// 登录验证
  } else if (e.getSource() == resetButton) {// 重置
   reset();// 重新设置各项的值
  }
 }
 private void checkUser() {
  if(dbipname==null||dbipname.equals("")){
   JOptionPane.showMessageDialog(this, "<html><h4>"+ "请输入连接数据库服务器IP地址、IP不容许为空值!" + "<html><h4>", "警告",JOptionPane.WARNING_MESSAGE);
  }else if(duankouname==":"||duankouname.equals(":")){
   JOptionPane.showMessageDialog(this, "<html><h4>"+ "请输入数据库端口、端口不容许为空!" + "<html><h4>", "警告",JOptionPane.WARNING_MESSAGE);
  }else if(dbnames==":"||dbnames.equals(":")||dbnames=="/"||dbnames.equals("/")||dbnames==";DatabaseName="||dbnames.equals(";DatabaseName=")){
   JOptionPane.showMessageDialog(this, "<html><h4>"+ "请输入数据库名称、数据库名称不容许为空!" + "<html><h4>", "警告",JOptionPane.WARNING_MESSAGE);
  }else if(dbusernames==null||dbusernames.equals("")){
   JOptionPane.showMessageDialog(this, "<html><h4>"+ "请输入登录账号、账号不能为空!" + "<html><h4>", "警告",JOptionPane.WARNING_MESSAGE);
  }
  else{
   
   System.err.println(drivername);
   System.err.println(getURL());
  }
  
 }
 // 得到界面中的所有项的值
 private void getValues() {
  //此处由于sql 2000 与 2005 方言一样 但是连接字符串不一样  所有要做区别
  if(dbDriver.getSelectedItem().equals("(sql 2000)com.microsoft.sqlserver.jdbc.SQLServerDriver")||dbDriver.getSelectedItem().equals("(sql 2005or2008)com.microsoft.sqlserver.jdbc.SQLServerDriver")){
   drivername = udrivername;
  }else {
   drivername = (String) dbDriver.getSelectedItem();
  }
  urlname = (String) dbURL.getSelectedItem();
  dbipname = ipTF.getText().trim();
  //在端口前面追加:
  StringBuffer sbBuf = new StringBuffer(duankouTF.getText().trim());
  sbBuf.insert(0,":");
  duankouname = sbBuf.toString();
  StringBuffer sbBuffer = new StringBuffer(dbnam.getText().trim());
  //dbnames = dbnam.getText().trim();
  //判断数据库追加字符
  if(dbDriver.getSelectedItem().equals("(sql 2000)com.microsoft.sqlserver.jdbc.SQLServerDriver")||dbDriver.getSelectedItem().equals("(sql 2005or2008)com.microsoft.sqlserver.jdbc.SQLServerDriver")){
   sbBuffer.insert(0,";DatabaseName=");
   dbnames=sbBuffer.toString();
  }else if (dbDriver.getSelectedItem().equals("oracle.jdbc.driver.OracleDriver")){
   sbBuffer.insert(0,":");
   dbnames=sbBuffer.toString();
  }else if (dbDriver.getSelectedItem().equals("com.ibm.db2.jdbc.app.DB2Driver")||dbDriver.getSelectedItem().equals("com.sybase.jdbc.SybDriver")||dbDriver.getSelectedItem().equals("com.informix.jdbc.IfxDriver")){
   sbBuffer.insert(0,"/");
   dbnames=sbBuffer.toString();
  }else if (dbDriver.getSelectedItem().equals("com.mysql.jdbc.Driver")){
   sbBuffer.insert(0,"/");
   dbnames=sbBuffer.toString();
  }else if (dbDriver.getSelectedItem().equals("org.postgresql.Driver")){
   sbBuffer.insert(0,"/");
   dbnames=sbBuffer.toString();
  }
  dbusernames = dbnamTF.getText().trim();
  passwordname = passwordTF.getText().trim();
 }
 
 public String getURL() {
  StringBuffer sb = new StringBuffer();
  sb.append(urlname);
  sb.append(dbipname);
  sb.append(duankouname);
  sb.append(dbnames);
  return sb.toString();
 }
 
 // 重新设置各项的值
 private void reset() {
  dbDriver.setSelectedIndex(0);
  dbURL.setSelectedIndex(0);
  ipTF.setText("");
  duankouTF.setText("");
  dbnam.setText("");
  dbnamTF.setText("");
  passwordTF.setText("");
 }
}

猜你喜欢

转载自yuhui136126.iteye.com/blog/1763735