标签:bre cas png 课程 成功 count() void jbutton jframe
/**
* @author 李佩
*
* @version v1
*
* @time 2016/12/2 22:21
*
* @program 画出学生选课系统的学生界面
*
*/
package com.csms.windows;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.List;
import com.csms.dao.CourseArrangeDAO;
import com.csms.dao.SelectCourseDAO;
import com.csms.dao.StudentDAO;
import com.csms.entity.Student;
import com.csms.entity.CourseArrange;
import com.csms.entity.SelectCourse;
public class StudentWindow extends JFrame implements ActionListener {
// 选课系统的学生窗口界面的大小
private static final int WINDOWWIDE = 922;
private static final int WINDOWHIGH = 570;
// 从登录界面通过取出输入的用户名和用户密码,并通过查询取得该用户的所有的属性
public Student student = null;
// 判断打印课程的标志,flag!=1的时候就不能打印了,只能打印一次
private static int courseFlag = 1;
// 判断刷新选课的标志,flag!=1的时候就不能打印了,只能打印一次
private static int flushFlag = 1;
// 设置界面的table组件的变量
private JTable table = null;
private DefaultTableModel tableModel;
private JButton addFlushBtn = new JButton("刷新课程"); // 定义按钮
private JButton addSelectBtn = new JButton("确认选课"); // 定义按钮
private JTextField courseIDText = null;
// Student界面设置总函数
public StudentWindow() {
// 取得用户的所有信息
student = new StudentDAO().searchStudentAll(LoginWindow.getLoginUserName(), LoginWindow.getLoginPassword());
// 1.左部信息显示区
this.rigthInformation(student);
// 2.添加右边的信息栏边框
this.liftInformation(student);
// 3.设置窗口的属性
PublicWindowSet.windowAttribute(this, WINDOWWIDE, WINDOWHIGH, null, "学生界面窗口");
}
// 左边窗口信息栏
public void liftInformation(Student student) {
// 1).添加一个文本标签
Icon lan = new ImageIcon("src//images//icons//lan.png");
JLabel label = new JLabel(lan);
label.setBounds(-20, 2, 250, 50);
this.add(label);
// 2).添加一个照片显示的窗口
// addPhotoLabel,addLabel也是PublicWindowSet类中封装好的标签添加函数
String photoUrl = "src//images//students//" + student.getStuID() + ".jpg";
PublicWindowSet.addPhotoLabel(this, 40, 70, 130, 170, photoUrl);
// 添加学生信息标签
PublicWindowSet.addLabel(this, 16, 40, 243, 200, 40, "姓名: " + student.getStuName());
PublicWindowSet.addLabel(this, 16, 40, 263, 200, 40, "学号: " + student.getStuID());
PublicWindowSet.addLabel(this, 16, 40, 283, 200, 40, "年龄: " + student.getStuAge());
PublicWindowSet.addLabel(this, 16, 40, 303, 200, 40, "性别: " + student.getStuGender());
PublicWindowSet.addLabel(this, 16, 40, 323, 200, 40, "班级: " + student.getStuClass());
PublicWindowSet.addLabel(this, 16, 40, 343, 200, 40, "学院: " + student.getStuSdept());
// 3).设置按钮
// 修改密码按钮
Icon psdIcon = new ImageIcon("src//images//icons//fixpsd.png");
this.addButton(psdIcon, 1, 390, this);
// 已选课程按钮
Icon selectIcon = new ImageIcon("src//images//icons//seecourse.png");
this.addButton(selectIcon, 2, 430, this);
// 查看成绩按钮
Icon gradeIcon = new ImageIcon("src//images//icons//seegrade.png");
this.addButton(gradeIcon, 3, 470, this);
// 4).设置分隔标签
Icon away = new ImageIcon("src//images//icons//tree1.png");
JLabel awayLabel = new JLabel(away);
awayLabel.setBounds(200, 50, 10, 450);
this.add(awayLabel);
}
// 右部列表信息
public void rigthInformation(Student student) {
// 设置JTabel的默认类型
this.tableModel = new DefaultTableModel(new CourseList().userInfo, new CourseList().titles);
// 添加JLabel组件
this.table = new JTable(this.tableModel);
// 禁止JLabel组件随着窗口的大小而改变
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// JTabel组件表格的显示尺寸
table.setPreferredScrollableViewportSize(new Dimension(690, 0));
// 使列表不可以整列的进行移动
table.getTableHeader().setReorderingAllowed(false);
// 使列表框不可被编辑
table.enable(false);
// 给JTabel组件添加滑动条
JScrollPane scr = new JScrollPane(this.table);
// 设置面板
JPanel toolBar = new JPanel();
// 添加底部信息提示标签
Icon bottom = new ImageIcon("src//images//icons//bottom.jpg");
JLabel bottomLab = new JLabel(bottom);
toolBar.add(bottomLab);
// 添加课程号输入文本域
courseIDText = new JTextField(25);
toolBar.add(courseIDText);
// 添加两个按钮:选课按钮和,刷新课程按钮
toolBar.add(this.addFlushBtn);
toolBar.add(this.addSelectBtn);
// 将底部操作组件添加入面板的南部区域
this.add(toolBar, BorderLayout.SOUTH);
// 将带滚动条的Tabel组件添加入面板的东部区域
this.add(scr, BorderLayout.EAST);
// 添加选课按钮和刷新课程列表按钮的响应事件
this.addFlushBtn.addActionListener(this);
this.addSelectBtn.addActionListener(this);
}
// 按钮添加方法
private void addButton(Icon icon, int flag, int high, StudentWindow sw) {
JButton button = new JButton(icon);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 添加出发事件
switch (flag) {
case 1:
// 修改密码
new StudentFixPassWordWindows(student, sw);
break;
case 2:
// 查看已选课程
new SelectCourseWindows(courseFlag, student);
break;
case 3:
// 退选课程
new exitCourseWindows(student, 1);
break;
}
}
});
button.setBounds(35, high, 125, 30);
sw.add(button);
}
// JTabel列表属性设置类
class CourseList extends AbstractTableModel {
public String[] titles = { "序号", "课程ID", "课程名", "老师", "学时", "学分", "类型", "选课上限", "已选人数" };
public Object[][] userInfo = {}; // 定义数据
public int getRowCount() {
return 0;
}
public int getColumnCount() {
return 0;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return null;
}
}
// 取得窗口的宽度
public static int getWindowwide() {
return WINDOWWIDE;
}
// 取得窗口的高度
public static int getWindowhigh() {
return WINDOWHIGH;
}
// 选课按钮和刷新按钮的时间响应机制处理函数
public void actionPerformed(ActionEvent e) {
// 刷新课程信息,从数据库中读出所有的课程信息
if (e.getSource() == this.addFlushBtn) {
if (flushFlag == 1) {
List<CourseArrange> list = new CourseArrangeDAO().searchCourseInformation();
CourseArrange arrange = null;
for (int i = 0; i < list.size(); i++) {
arrange = list.get(i);
this.tableModel.addRow(new Object[] { i + 1, arrange.getCourseID(), arrange.getCourseName(),
arrange.getCourseTeacher(), arrange.getCourseTimes(), arrange.getCourseGridits(),
arrange.getCourseType(), arrange.getCourseNumber(), arrange.getCourseSelectNumber() });
}
flushFlag++;
}
}
// 确定添加课程信息
if (e.getSource() == this.addSelectBtn) {
// 1. 取得学生的ID
String studentID = student.getStuID();
// 2. 取得所写的课程ID
String courseID = courseIDText.getText();
// 测试
System.out.println("StuID: " + studentID + " , " + "courseID: " + courseID);
// 3. 将数据刷新到数据库的已选课程表
if (courseID.length() != 0) {
int count = new SelectCourseDAO().addStudentSelectCourseInformation(studentID, courseID);
} else {
PublicWindowSet.promptPopUp("请填写课程ID,在选课!", "选课提示", this);
}
}
}
// 修改密码成功后学生窗口释放函数
public void windowDispose() {
this.dispose();
}
}
// 修改密码弹出框
class StudentFixPassWordWindows {
JFrame frame = new JFrame();
public StudentFixPassWordWindows(Student stu, StudentWindow sw) {
frame.setLayout(null);
// 1.添加三个标签
// 添加密码框修改密码的标签
PublicWindowSet.addLabel(frame, 16, 68, 30, 80, 30, " 原密码:");
PublicWindowSet.addLabel(frame, 16, 68, 65, 80, 30, " 新密码:");
PublicWindowSet.addLabel(frame, 16, 68, 100, 80, 30, "重新输入:");
// 2.添加三个文本域
// 添加密码框修改密码的密码输入文本框
JPasswordField oldText = new JPasswordField();
JPasswordField newText = new JPasswordField();
JPasswordField reEText = new JPasswordField();
PublicWindowSet.addTextField(oldText, 160, 30, 150, 30, frame);
PublicWindowSet.addTextField(newText, 160, 65, 150, 30, frame);
PublicWindowSet.addTextField(reEText, 160, 100, 150, 30, frame);
// 3.添加确定按钮
// 添加按钮
Icon icon = new ImageIcon("src//images//icons//confirmFix.png");
JButton confirmBtn = new JButton(icon);
// 设置位置
confirmBtn.setBounds(150, 150, 125, 30);
// 添加进面板
frame.add(confirmBtn);
confirmBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 添加修改密码的数据库操作
// 1. 判断原密码输入框的密码是否和元密码相同
if (oldText.getText().length() == 0) {
PublicWindowSet.promptPopUp("请输入原密码", "错误提示", frame);
} else if (newText.getText().length() == 0 || reEText.getText().length() == 0) {
PublicWindowSet.promptPopUp("请输入新密码或重复输入新密码", "错误提示", frame);
}
if (newText.getText().length() != 0 && reEText.getText().length() != 0
&& !oldText.getText().equals(stu.getLoginPSD())) {
PublicWindowSet.promptPopUp("原密码输入错误!", "更改密码提示", frame);
}
// 2. 判断新密码和原密码是否输入一致
if (newText.getText().length() != 0 && reEText.getText().length() != 0
&& !reEText.getText().equals(newText.getText())
&& oldText.getText().equals(stu.getLoginPSD())) {
PublicWindowSet.promptPopUp("两次密码输入不一致!", "更改密码提示", frame);
}
// 3. 更新密码操作
if (newText.getText().length() != 0 && reEText.getText().length() != 0
&& reEText.getText().equals(newText.getText()) && oldText.getText().equals(stu.getLoginPSD())) {
new StudentDAO().updatePassword(stu.getStuID(), newText.getText());
// 修改成功释放该窗口
frame.dispose();
// 释放学生窗口
sw.windowDispose();
// 同时调用出登录窗口
new LoginWindow();
}
}
});
PublicWindowSet.windowAttribute(frame, 420, 230, null, "密码修改窗口");
}
}
// 查看已选课程
class SelectCourseWindows extends JFrame implements ActionListener {
private String[] columnNames = { "课程名", "老师", "学分", "成绩", "上课安排" };
private DefaultTableModel selectTableModel = null;
private static int flag;
private Student student = null;
// addTableList是PublicWindowSet中封装的table组件添加的方法
public SelectCourseWindows(int flag, Student student) {
PublicWindowSet.windowAttribute(this, 400, 180, null, "查看课程窗口");
selectTableModel = PublicWindowSet.addTableList(this, columnNames);
JButton seeBut = new JButton("查看课程");
JPanel bunPanel = new JPanel();
bunPanel.add(seeBut);
seeBut.addActionListener(this);
this.add(bunPanel, BorderLayout.SOUTH);
// 确定actionPerformed只能打印一次
this.flag = flag;
this.student = student;
}
// 添加button的时间响应机制
public void actionPerformed(ActionEvent e) {
if (flag == 1) {
List<Object> list = new CourseArrangeDAO().searchSpecificInformation(student.getStuID());
for (int i = 0; i < list.size(); i = i + 2) {
CourseArrange ca = (CourseArrange) list.get(i);
SelectCourse sc = (SelectCourse) list.get(i + 1);
selectTableModel.addRow(new Object[] { ca.getCourseName(), ca.getCourseTeacher(), ca.getCourseGridits(),
sc.getStudentGrade(), ca.getCourseArrange() });
}
flag++;
}
}
}
// 退选课程
class exitCourseWindows extends JFrame implements ActionListener {
// 表头
private String[] columnNames = { "课程ID", "课程名", "学分", "课程安排" };
private DefaultTableModel exitTableModel = null;
static int flag = 0;
static int flagExit = 0;
JTextField text = null;
private Student student = null;
public exitCourseWindows(Student student, int flag) {
PublicWindowSet.windowAttribute(this, 300, 220, null, "退选课程窗口");
exitTableModel = PublicWindowSet.addTableList(this, columnNames);
JLabel label = new JLabel("在下框中输入退选的课程ID!");
text = new JTextField(20);
JButton exitBut = new JButton("退选");
JPanel bunPanel = new JPanel();
bunPanel.setLayout(new GridLayout(3, 1));
bunPanel.add(label);
bunPanel.add(text);
bunPanel.add(exitBut);
exitBut.addActionListener(this);
this.add(bunPanel, BorderLayout.SOUTH);
this.student = student;
this.flag = flag;
}
public void actionPerformed(ActionEvent e) {
if (flag == 1) {
List<CourseArrange> list = new CourseArrangeDAO().selectNameAndIDForCourse(student.getStuID());
for (int i = 0; i < list.size(); i++) {
exitTableModel.addRow(new Object[] { list.get(i).getCourseID(), list.get(i).getCourseName(),
list.get(i).getCourseGridits(), list.get(i).getCourseArrange() });
}
flag = 0;
flagExit = 1;
} else if (flagExit == 1) {
if (text.getText().length() == 0) {
PublicWindowSet.promptPopUp("请输入退选课程的ID!", "退选提示", this);
} else {
System.out.println(text.getText());
new SelectCourseDAO().removeCourse(text.getText());
}
}
}
}
标签:bre cas png 课程 成功 count() void jbutton jframe
原文地址:http://www.cnblogs.com/geore/p/6155405.html