📄 studentframe.java
字号:
import java.util.Vector;
import java.awt.Font;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Component;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.BorderFactory;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.border.Border;
/*
* 这是维护学生信息的主界面,可以添加、删除指定的学生信息
*/
public class StudentFrame extends JFrame
{
private static final int WIDTH = 500;
private static final int HEIGHT = 400;
private JFrame parFrame;
private JComboBox stuNameCombox = new JComboBox();
public StudentFrame (JFrame frame)
{
parFrame = frame;
Container con = getContentPane();
setSize(WIDTH, HEIGHT);
setTitle("学生信息维护主页面");
setResizable(false);
StudentContentPanel content = new StudentContentPanel(stuNameCombox);
StudentButtonPanel buttonPanel = new StudentButtonPanel(parFrame, this, stuNameCombox);
con.add(content, BorderLayout.CENTER);
con.add(buttonPanel, BorderLayout.SOUTH);
}
}
/*
* 学生信息主面板
*/
class StudentContentPanel extends JPanel
{
private JLabel nameLabel = new JLabel ("姓 名: ");
private JLabel numberLabel = new JLabel("学 号:");
private JLabel sexLabel = new JLabel ("性 别: ");
private JLabel birthLabel = new JLabel ("出生日期: ");
private JLabel entrayLabel = new JLabel("入学日期: ");
private JLabel spcialLabel = new JLabel("专 业: ");
private JLabel addressLabel = new JLabel("籍 贯: ");
private JLabel detailLabel = new JLabel("学生详细信息",SwingConstants.CENTER);
private JComboBox nameText;
private JTextField numberText = new JTextField();
private JTextField sexText = new JTextField();
private JTextField birthText = new JTextField();
private JTextField entrayText = new JTextField();
private JTextField spcialText = new JTextField();
private JTextField addressText = new JTextField();
private JTextArea detailText = new JTextArea(15,20);
private Student oneStudent;
private OperateStudent operateStudent;
private String stuName = "";
private String stuNumber = "";
private String stuSex = "";
private String stuBirthday = "";
private String stuEntryday = "";
private String stuSpcial = "";
private String stuAddress = "";
private String stuCourse = "";
private String stuComment = "";
public StudentContentPanel(JComboBox id)
{
setBackground(new Color(153,204,204));
nameText = id;
operateStudent = new OperateStudent();
StudentStorage store = operateStudent.queryAllStudent();
Vector vec = store.getStudentVec();
//初始化时,如果数据库中没有相应的记录,相应的组件设置文本内容为空
if(vec.size() == 0)
{
numberText.setText("");
sexText.setText("");
birthText.setText("");
entrayText.setText("");
spcialText.setText("");
addressText.setText("");
detailText.setText("");
}
//如果有记录,会根据当前选择的代码号,进行相应组件文本的设置
else
{
for(int i = 0; i < vec.size(); i++)
{
oneStudent = (Student)vec.get(i);
String name = oneStudent.getStudentName();
nameText.addItem(name);
}
stuName = (String)nameText.getSelectedItem();
//根据课程代码查询数据库相关的信息
oneStudent = operateStudent.queryOneStudent(stuName);
stuNumber = oneStudent.getStudentNumber();
stuSex = oneStudent.getStudentSex();
stuBirthday = oneStudent.getStudentBirthday();
stuEntryday = oneStudent.getStudentEntryday();
stuSpcial = oneStudent.getStudentSpeciality();
stuAddress = oneStudent.getStudentAddress();
stuCourse = oneStudent.getStudentCourse();
stuComment = oneStudent.getStudentComment();
numberText.setText(stuNumber);
sexText.setText(stuSex);
birthText.setText(stuBirthday);
entrayText.setText(stuEntryday);
spcialText.setText(stuSpcial);
addressText.setText(stuAddress);
String detailString = "";
if(stuCourse != null)
{
detailString = "课程为:" + detailString + stuCourse;
}
if(stuComment != null)
{
detailString = detailString + "\n鉴定为:" + stuComment;
}
detailText.setText(detailString);
}
Border panelOutBorder = BorderFactory.createLineBorder(new Color(255,204,51),4);
Border panelInBorder = BorderFactory.createLineBorder(new Color(153,204,0),3);
setBorder(BorderFactory.createCompoundBorder(panelOutBorder,panelInBorder));
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.NONE;
constraints.weightx = 1;
constraints.weighty = 5;
this.setLayout(gridbag);
Font labelFont = new Font("Dialog",Font.BOLD,14);
nameLabel.setFont(labelFont);
numberLabel.setFont(labelFont);
sexLabel.setFont(labelFont);
birthLabel.setFont(labelFont);
entrayLabel.setFont(labelFont);
spcialLabel.setFont(labelFont);
addressLabel.setFont(labelFont);
detailLabel.setFont(labelFont);
constraints.anchor = GridBagConstraints.CENTER;
add(nameLabel,constraints,0,0,1,1);
add(numberLabel,constraints,0,1,1,1);
add(sexLabel,constraints,0,2,1,1);
add(birthLabel,constraints,0,3,1,1);
add(entrayLabel,constraints,0,4,1,1);
add(spcialLabel,constraints,0,5,1,1);
add(addressLabel,constraints,0,6,1,1);
Font textFont = new Font("Dialog",Font.BOLD,16);
nameText.setPreferredSize(new Dimension(120,40));
nameText.setEditable(false);
nameText.setFont(textFont);
nameText.setBackground(new Color(153,179,204));
nameText.setForeground(Color.black);
Border outBorder = BorderFactory.createLineBorder(Color.red,2);
Border inBorder = BorderFactory.createLoweredBevelBorder();
nameText.setBorder(BorderFactory.createCompoundBorder(outBorder,inBorder));
numberText.setPreferredSize(new Dimension(120,40));
numberText.setFont(textFont);
numberText.setEditable(false);
sexText.setPreferredSize(new Dimension(120,40));
sexText.setFont(textFont);
sexText.setEditable(false);
birthText.setPreferredSize(new Dimension(120,40));
birthText.setFont(textFont);
birthText.setEditable(false);
entrayText.setPreferredSize(new Dimension(120,40));
entrayText.setFont(textFont);
entrayText.setEditable(false);
spcialText.setPreferredSize(new Dimension(120,40));
spcialText.setFont(textFont);
spcialText.setEditable(false);
addressText.setPreferredSize(new Dimension(120,40));
addressText.setFont(textFont);
addressText.setEditable(false);
constraints.anchor = GridBagConstraints.WEST;
add(nameText,constraints,1,0,1,1);
add(numberText,constraints,1,1,1,1);
add(sexText,constraints,1,2,1,1);
add(birthText,constraints,1,3,1,1);
add(entrayText,constraints,1,4,1,1);
add(spcialText,constraints,1,5,1,1);
add(addressText,constraints,1,6,1,1);
constraints.fill = GridBagConstraints.BOTH;
add(detailLabel,constraints,2,0,1,1);
Border outAreaBorder = BorderFactory.createLineBorder(Color.blue,2);
Border inAreaBorder = BorderFactory.createLoweredBevelBorder();
detailText.setBorder(BorderFactory.createCompoundBorder(outAreaBorder,inAreaBorder));
detailText.setLineWrap(true);
detailText.setEditable(false);
JScrollPane scrollPane = new JScrollPane(detailText);
add(scrollPane,constraints,2,1,1,6);
//为下拉组合框添加事件监听器
nameText.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
stuName = (String)nameText.getSelectedItem();
oneStudent = new OperateStudent().queryOneStudent(stuName);
if(oneStudent != null)
{
stuNumber = oneStudent.getStudentNumber();
stuSex = oneStudent.getStudentSex();
stuBirthday = oneStudent.getStudentBirthday();
stuEntryday = oneStudent.getStudentEntryday();
stuSpcial = oneStudent.getStudentSpeciality();
stuAddress = oneStudent.getStudentAddress();
stuCourse = oneStudent.getStudentCourse();
stuComment = oneStudent.getStudentComment();
numberText.setText(stuNumber);
sexText.setText(stuSex);
birthText.setText(stuBirthday);
entrayText.setText(stuEntryday);
spcialText.setText(stuSpcial);
addressText.setText(stuAddress);
String detailString = "";
if(stuCourse != null)
{
detailString = "课程为:" + detailString + stuCourse;
}
if(stuComment != null)
{
detailString = detailString + "\n鉴定为:" + stuComment;
}
detailText.setText(detailString);
}
else
{
numberText.setText("");
sexText.setText("");
birthText.setText("");
entrayText.setText("");
spcialText.setText("");
addressText.setText("");
detailText.setText("");
}
}
});
}
public void add(Component c, GridBagConstraints constraints,
int x, int y, int w, int h)
{
constraints.gridx = x;
constraints.gridy = y;
constraints.gridwidth = w;
constraints.gridheight = h;
add(c,constraints);
}
}
class StudentButtonPanel extends JPanel
{
private JFrame parFrame;
private JFrame subFrame;
private JComboBox stuNameCombox;
public StudentButtonPanel(JFrame par, JFrame sub, JComboBox id)
{
this.parFrame = par;
this.subFrame = sub;
this.stuNameCombox = id;
Font buttonFont = new Font("Dialog",Font.BOLD,14);
JButton addButton = new JButton("添加学生");
JButton deleteButton = new JButton("删除学生");
JButton exitButton = new JButton("退出学生信息维护");
addButton.setFont(buttonFont);
deleteButton.setFont(buttonFont);
exitButton.setFont(buttonFont);
FlowLayout buttonLay = new FlowLayout();
buttonLay.setHgap(10);
buttonLay.setVgap(6);
addButton.setForeground(new Color(204,51,77));
deleteButton.setForeground(new Color(204,51,77));
exitButton.setForeground(new Color(204,51,77));
add(addButton);
add(deleteButton);
add(exitButton);
setBackground(new Color(0,153,204));
setBorder(BorderFactory.createLineBorder(new Color(0,204,153),4));
//删除学生记录
deleteButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String stuName = (String)stuNameCombox.getSelectedItem();
int i = JOptionPane.showConfirmDialog(null,"你确认要删除姓名为" + stuName + "的学生吗?",
"删除学生",JOptionPane.YES_NO_OPTION);
if(i == 0)
{
new OperateStudent().deleteStudent(stuName);
stuNameCombox.removeItem(stuName);
}
}
});
//添加学生记录
addButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
AddStudentFrame frame = new AddStudentFrame(subFrame, stuNameCombox);
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 + -