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();
    }
}

}

Java Swing 学生信息编辑对话框 - EditorDialog

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

免费AI点我,无需注册和登录