Java Swing 学生信息编辑对话框 - EditorDialog
package com.itheim.text_13;
import javax.swing.; import java.awt.; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;
public class EditorDialog extends JDialog implements ActionListener {
private JTextField nameField;
private JTextField idField;
private JComboBox<String> clsBox;
private JTextField pointsField;
private JTextField birthdayField;
private JRadioButton bButton;
private JRadioButton gButton;
private JPanel centerPane;
private Student student;
private JButton addBtn;
private JButton cancelBtn;
public Student getStudent() {
return student;
}
EditorDialog(Student st, JFrame owner, String title) {
super(owner);
setTitle(title);
setSize(480, 200);
setResizable(false);
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
setLocation((screenWidth - 480) / 2, (screenHeight - 200) / 2);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
student = st;
createEditor();
createButtons();
initData();
}
private JTextField createAndLayoutEditor(String title) {
JLabel lb = new JLabel(title);
lb.setHorizontalAlignment(SwingConstants.RIGHT);
JTextField field = new JTextField(20);
centerPane.add(lb);
centerPane.add(field);
return field;
}
private void createEditor() {
JLabel gapLabel = new JLabel("");
gapLabel.setSize(32, 32);
this.add(gapLabel, BorderLayout.NORTH);
gapLabel = new JLabel("");
gapLabel.setSize(64, 16);
this.add(gapLabel, BorderLayout.WEST);
gapLabel = new JLabel("");
gapLabel.setSize(32, 32);
this.add(gapLabel, BorderLayout.EAST);
centerPane = new JPanel();
GridLayout layout = new GridLayout(3, 4, 8, 4);
centerPane.setLayout(layout);
this.add(centerPane, BorderLayout.CENTER);
nameField = createAndLayoutEditor("姓名");
idField = createAndLayoutEditor("学号");
clsBox = new JComboBox<>(new String[]{"一班", "二班", "三班"});
JLabel clsLabel = new JLabel("班级");
clsLabel.setHorizontalAlignment(SwingConstants.RIGHT);
centerPane.add(clsLabel);
centerPane.add(clsBox);
pointsField = createAndLayoutEditor("学分");
birthdayField = createAndLayoutEditor("生日");
bButton = new JRadioButton("男");
bButton.setHorizontalAlignment(SwingConstants.RIGHT);
centerPane.add(bButton);
gButton = new JRadioButton("女");
gButton.setHorizontalAlignment(SwingConstants.CENTER);
centerPane.add(gButton);
ButtonGroup genderGroup = new ButtonGroup();
genderGroup.add(bButton);
genderGroup.add(gButton);
}
private void createButtons() {
JPanel btnPane = new JPanel();
FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER, 32, 16);
btnPane.setLayout(flowLayout);
this.add(btnPane, BorderLayout.SOUTH);
addBtn = new JButton("确认");
cancelBtn = new JButton("取消");
btnPane.add(addBtn);
btnPane.add(cancelBtn);
addBtn.addActionListener(this);
cancelBtn.addActionListener(this);
}
private void initData() {
if (student == null) {
return;
}
nameField.setText(student.getName());
idField.setText(student.getId());
clsBox.setSelectedItem(student.getCls());
pointsField.setText(String.valueOf(student.getPoints()));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
birthdayField.setText(sdf.format(student.getBirthday()));
if (student.getGender() == 0) {
bButton.setSelected(true);
} else {
gButton.setSelected(true);
}
}
private void addStudent() {
String name = nameField.getText();
String cls = (String) clsBox.getSelectedItem();
String pts = pointsField.getText();
String bDate = birthdayField.getText();
String sid = idField.getText();
int gender = 0;
if (gButton.isSelected()) {
gender = 1;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dt = null;
int points = -1;
try {
dt = sdf.parse(bDate);
points = Integer.parseInt(pts);
} catch (ParseException e1) {
e1.printStackTrace();
}
if (dt != null && points >= 0) {
if (student == null) {
student = new Student(sid, name, cls, points, dt, gender);
} else {
student.setId(sid);
student.setName(name);
student.setCls(cls);
student.setPoints(points);
student.setBirthday(dt);
student.setGender(gender);
}
dispose();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addBtn) {
addStudent();
} else {
student = null;
dispose();
}
}
}

原文地址: http://www.cveoy.top/t/topic/oK2V 著作权归作者所有。请勿转载和采集!