📄 courseframe.java
字号:
import java.util.Vector;
import java.awt.Font;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.Box;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JOptionPane;
/*
* 这是课程信息维护的主界面,包括添加、删除功能。
* 如果点击添加按钮,会弹出一个新的界面,让用户输入相应的信息。
* 如果点击删除,会弹出确认对话框,让用户确认删除的信息。
*/
public class CourseFrame extends JFrame
{
private static final int WIDTH = 400;
private static final int HEIGHT = 300;
private JComboBox courseIdCombox = new JComboBox();
private JFrame parFrame;//父窗口
public CourseFrame (JFrame frame)
{
parFrame = frame;
Container con = getContentPane();
setSize(WIDTH, HEIGHT);
setTitle("课程信息维护主页面");
setResizable(false);//设置用户不可以改变框架的大小
CourseContentPanel contentPanel = new CourseContentPanel(courseIdCombox);
CourseButtonPanel buttonPanel = new CourseButtonPanel(parFrame, this, courseIdCombox);
con.add(contentPanel, BorderLayout.CENTER);
con.add(buttonPanel, BorderLayout.SOUTH);
}
}
class CourseContentPanel extends JPanel
{
private JComboBox courseIdCombox;
private JTextField courseName = new JTextField();
private JTextField courseTeacher = new JTextField();
private JTextArea courseDesArea = new JTextArea(15,24);
private Course oneCourse;
private String strCourseId;//课程代码
private String strCourseName;//课程名称
private String strCourseTeacher;//授课教师
private String strCourseDes;//课程简述
private OperateCourse operateCourse;
public CourseContentPanel(JComboBox id)
{
courseIdCombox = id;
operateCourse = new OperateCourse();
CourseStorage store = operateCourse.queryAllCourse();
Vector vec = store.getCourseVec();
//初始化时,如果数据库中没有相应的记录,相应的组件设置文本内容为空
if(vec.size() == 0)
{
courseName.setText("");
courseTeacher.setText("");
courseDesArea.setText("");
}
//如果有记录,会根据当前选择的代码号,进行相应组件文本的设置
else
{
for(int i = 0; i < vec.size(); i++)
{
oneCourse = (Course)vec.get(i);
String courseId = oneCourse.getCourseId();
courseIdCombox.addItem(courseId);
}
strCourseId = (String)courseIdCombox.getSelectedItem();
//根据课程代码查询数据库相关的信息
oneCourse = operateCourse.queryOneCourse(strCourseId);
strCourseName = oneCourse.getCourseName();
strCourseTeacher = oneCourse.getCourseTeacher();
strCourseDes = oneCourse.getCourseDes();
courseName.setText(strCourseName);
courseTeacher.setText(strCourseTeacher);
courseDesArea.setText(strCourseDes);
}
//设置所有标签的字体
Font labelFont = new Font("Dialog",Font.BOLD,14);
// 构造第一个水平箱,并添加组件
JLabel courseIdLabel = new JLabel("课程代码:");
courseIdLabel.setFont(labelFont);
courseIdCombox.setPreferredSize(new Dimension(60, 30));
Box hbox1 = Box.createHorizontalBox();
hbox1.add(courseIdLabel);
hbox1.add(Box.createHorizontalStrut(20));
hbox1.add(courseIdCombox);
// 构造第二个水平箱,并添加组件
JLabel courseNameLabel = new JLabel("课程名称:");
courseNameLabel.setFont(labelFont);
courseName.setEditable(false);
courseName.setPreferredSize(new Dimension(60, 30));
Box hbox2 = Box.createHorizontalBox();
hbox2.add(courseNameLabel);
hbox2.add(Box.createHorizontalStrut(20));
hbox2.add(courseName);
// 构造第三个水平箱,并添加组件
JLabel courseTeacherLabel = new JLabel("授课教师:");
courseTeacherLabel.setFont(labelFont);
courseTeacher.setEditable(false);
courseTeacher.setPreferredSize(new Dimension(60, 30));
Box hbox3 = Box.createHorizontalBox();
hbox3.add(courseTeacherLabel);
hbox3.add(Box.createHorizontalStrut(20));
hbox3.add(courseTeacher);
// 构造一个垂直箱,并添加组件
JLabel courseDesLabel = new JLabel("课程简述:");
courseDesLabel.setFont(labelFont);
courseDesArea.setLineWrap(true);
courseDesArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(courseDesArea);
Box hbox4 = Box.createVerticalBox();
hbox4.add(courseDesLabel);
hbox4.add(scrollPane);
// 将四个箱体再添加到一个垂直箱中
Box vbox = Box.createVerticalBox();
vbox.add(hbox1);
vbox.add(hbox2);
vbox.add(hbox3);
vbox.add(hbox4);
add(vbox);
//为下拉组合框添加事件监听器
courseIdCombox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
strCourseId = (String)courseIdCombox.getSelectedItem();
oneCourse = new OperateCourse().queryOneCourse(strCourseId);
if(oneCourse != null)
{
strCourseName = oneCourse.getCourseName();
strCourseTeacher = oneCourse.getCourseTeacher();
strCourseDes = oneCourse.getCourseDes();
courseName.setText(strCourseName);
courseTeacher.setText(strCourseTeacher);
courseDesArea.setText(strCourseDes);
}
else
{
courseName.setText("");
courseTeacher.setText("");
courseDesArea.setText("");
}
}
});
}
}
class CourseButtonPanel extends JPanel
{
private JFrame parFrame;
private JFrame subFrame;
private JComboBox courseIdCombox;
public CourseButtonPanel(JFrame par, JFrame sub, JComboBox id)
{
this.parFrame = par;
this.subFrame = sub;
this.courseIdCombox = id;
JButton addButton = new JButton("添加课程");
JButton deleteButton = new JButton("删除课程");
JButton exitButton = new JButton("退出课程信息维护");
add(addButton);
add(deleteButton);
add(exitButton);
//删除课程记录
deleteButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String strCourseId = (String)courseIdCombox.getSelectedItem();
int i = JOptionPane.showConfirmDialog(null,"你确认要删除代码为" + strCourseId + "的课程吗?",
"删除课程",JOptionPane.YES_NO_OPTION);
if(i == 0)
{
int cou = new OperateCourse().deleteCourse(strCourseId);
if(cou == 1)
{
System.out.println("删除成功!");
courseIdCombox.removeItem(strCourseId);
}
}
}
});
//添加课程记录
addButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
AddCourseFrame frame = new AddCourseFrame(subFrame, courseIdCombox);
subFrame.hide();
frame.show();
}
});
//返回父窗口
exitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
subFrame.hide();
parFrame.show();
}
});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -