📄 welcomegui.java
字号:
package view;
import java.util.List;
import java.util.Vector;
import java.util.Iterator;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import persistence.*;
import java.net.*;
import bean.*;
import tools.help;
/**
* @author Administrator
*/
public class WelcomeGUI extends JFrame implements ActionListener {
private JPanel panelLogin; //定义面板,存放用于登录的组件
private JLabel labelLogin; //登录标识
private JTextField tfId; //用户ID输入框
private JPasswordField pfPwd; //用户密码输入框
private JButton buttonLogin; //登录确认按钮
private JPanel panelSearch; //定义面板,存放用于模糊搜索的组件
private JTextField tfSearch; //输入模糊搜索条件的输入框
private JButton buttonSearch; //搜索确认按钮
private JScrollPane spTable; //定义一个又滚动条的面板,存放表组件
private String[] field = {"序号","ISBN","书名","作者","出版日期","出版社","类型"}; //定义表的显示字段名
private Object[][] ob = null; //初始化表记录为空
private static DefaultTableModel mod; //使用默认的表模式
private JTable table; //定义一个表组件
private GridBagConstraints cons; //布局格式
private bookInfoDAOImp bidaoimp;
public WelcomeGUI() { //初始化
setLogin(); //调用登录面板初始化方法
setSearch(); //调用搜索面板初始化方法
setTable(); //调用表面板初始化方法
setFrame(); //调用主面板初始化方法
}
public void setLogin() { //登录面板初始化方法
panelLogin = new JPanel();
FlowLayout fl = new FlowLayout(); //定义布局
fl.setAlignment(FlowLayout.LEFT); //设置布局为左对齐方式
panelLogin.setLayout(fl);
panelLogin.setBackground(Color.GREEN); //设置面板背景色为绿色
labelLogin = new JLabel("登录:"); //创建一个名位‘登录:’的标签
tfId = new JTextField(10); //设置用户ID输入框的长度为10字符
tfId.setToolTipText("请输入ID"); //鼠标悬停时,出现的提示信息
tfId.addActionListener(this); //为输入框添加事件
pfPwd = new JPasswordField(10); //设置密码输入框的长度为10字符
pfPwd.setToolTipText("请输入PASSWORD"); //鼠标悬停时,出现的提示信息
pfPwd.addActionListener(this); //为密码框添加事件
buttonLogin = new JButton("登录"); //创建一个名位‘登录’的按钮
buttonLogin.addActionListener(this); //添加事件
panelLogin.add(labelLogin); //将标签加入到登录面板中
panelLogin.add(tfId); //将用户ID输入框加入到登录面板中
panelLogin.add(pfPwd); //将密码输入框加入到登录面板中
panelLogin.add(buttonLogin); //将登录按钮加入到登录面板中
}
public void setSearch() { //搜索面板初始化方法
panelSearch = new JPanel();
FlowLayout fl = new FlowLayout();
fl.setAlignment(FlowLayout.CENTER);
panelSearch.setLayout(fl);
panelSearch.setBackground(Color.GREEN);
tfSearch = new JTextField(20);
tfSearch.setToolTipText("请输入有关书的信息,按\'查找\'进行模糊查找");
tfSearch.requestFocus(true);
tfSearch.addActionListener(this);
buttonSearch = new JButton("查找");
buttonSearch.addActionListener(this);
panelSearch.add(tfSearch);
panelSearch.add(buttonSearch);
}
public void setTable() { //表面板初始化方法
mod = new DefaultTableModel(ob,field);
table = new JTable(mod);
table.setPreferredScrollableViewportSize(new Dimension(400,350));
table.setEnabled(false);
spTable = new JScrollPane(table);
}
public void setFrame() { //主面板初始化方法
this.setTitle("欢迎界面"); //设置主面板的标题
Container con = this.getContentPane(); //获得主面板的布局管理器
GridBagLayout gridBag = new GridBagLayout();//定义布局为GridBagLayout
con.setLayout(gridBag); //设置主面板的布局
cons = new GridBagConstraints(0,0,1,10,0,0,GridBagConstraints.EAST,GridBagConstraints.HORIZONTAL,new Insets(2,2,2,2),0,0);
gridBag.setConstraints(panelLogin,cons); //设置登录面板的主面板中相应的位置
cons = new GridBagConstraints(0,10,1,10,1,1,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(2,2,2,2),0,0);
gridBag.setConstraints(panelSearch,cons); //设置搜索面板的主面板中相应的位置
cons = new GridBagConstraints(0,20,10,10,1,1,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(2,2,2,2),0,0);
gridBag.setConstraints(spTable,cons); //设置表面板的主面板中相应的位置
con.add(panelLogin); //将登录面板添加到主面板中
con.add(panelSearch); //将搜索面板添加到主面板中
con.add(spTable); //将表面板添加到主面板中
this.setSize(800,600); //设置主面板的初始大小
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension ds = tk.getScreenSize();
int screenWidth = ds.width;
int screenHeight = ds.height;
ds = this.getSize();
int frameWidth = ds.width;
int frameHeight = ds.height;
this.setLocation((screenWidth-frameWidth)/2,(screenHeight-frameHeight)/2); //设置主面板启动时,在屏幕的位置
/*try {
URL url = new URL("/img/blackicon.jpg");
Image img = tk.getImage(url);
this.setIconImage(img);
} catch(MalformedURLException e) {
System.out.println("Error:" + e.toString());
}
*/
this.setVisible(true); //设置主面板启动时为可见
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) { //事件处理
if(e.getSource() == tfId) { //用户ID输入框相应事件
pfPwd.requestFocus(true); //密码输入框获得光标
} else if(e.getSource() == pfPwd || e.getSource() == buttonLogin) { //密码输入框相应事件或登录按钮相应事件
if(!isEmpty(tfId.getText().trim(),String.valueOf(pfPwd.getPassword()))) { //判断用户ID和密码是否为空
if(DAOImp.isContantUserInfo(tfId.getText().trim(),String.valueOf(pfPwd.getPassword()))) { //调用判断用户方法,是否输入的用ID和密码与数据库中的匹配
new MainGUI(DAOImp.searchUserInfo(tfId.getText().trim())); //进入的相应的主界面
this.clear(); //调用清理方法,清理欢迎界面
} else { //不满足登录条件
tfId.setText("Please Input again"); //用户ID输入框弹出提示信息
pfPwd.setText(""); //清空密码输入框
tfId.requestFocus(); //用户ID输入框获得光标
}
}
} else if(e.getSource() == tfSearch || e.getSource() == buttonSearch) { //搜索输入框相应事件或搜索按钮相应事件
if(tfSearch.getText().trim().equals("")) { //判断输入的条件不为空
tfSearch.requestFocus(true); //搜索输入框获得光标
} else { //输入条件不为空
if(DAOImp.searchBookRows(tfSearch.getText().trim())) { //调用判断方法,数据库中是否存在匹配的记录
bidaoimp = new bookInfoDAOImp();
setTableRows(bidaoimp.getBookRows(tfSearch.getText().trim()));
//setTableRows(DAOImp.getBookRows(tfSearch.getText().trim())); //调用搜索方法,取得数据库中匹配的记录集
} else { //数据库中没有匹配记录
tfSearch.setText("Sorry,no rows searched"); //显示提示信息
tfSearch.requestFocus(true); //搜索输入框获得光标
}
}
}
}
public boolean isEmpty(String id,String pwd) { //方法,用于判断输入字符串是否为空
boolean bool = true;
if(help.isEmpty(tfId.getText().trim())) {
tfId.requestFocus(true);
} else if(help.isEmpty(String.valueOf(pfPwd.getPassword()))) {
pfPwd.requestFocus(true);
} else {
bool = false;
}
return bool;
}
public void clear() { //清理方法
tfId.setText(""); //用户ID输入框清空
tfId.requestFocus(true); //用户ID输入框获得光标
pfPwd.setText(""); //密码输入框清空
tfSearch.setText(""); //搜索输入框清空
}
public void setTableRows(List list) { //设置表记录的方法
for(int i = 0;i < mod.getRowCount();i++) { //移除表中原有的记录
mod.removeRow(i);
}
Iterator iter = list.iterator();
int i = 0;
while(iter.hasNext()) { //从List中取得字段,并组织成表Table能接受的格式
Vector<String> vs = new Vector<String>();
bookInfo bi = (bookInfo)iter.next();
vs.add(String.valueOf(++i));
vs.add(bi.getISBN());
vs.add(bi.getName());
vs.add(bi.getAuthor());
vs.add(bi.getPublishTime());
vs.add(bi.getPc().getName());
vs.add(bi.getBt().getName());
mod.addRow(vs); //向表中添加新的记录
}
}
public static void main(String[] args) {
new WelcomeGUI();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -