package view; import backend.model.Questions; import backend.service.impl.QuestionsService; import javax.swing.*; import java.awt.*; public class EditQuestionDialog extends JDialog{ private JTextField nameTextField; private JTextField descriptionTextField; private JTextField answerTextField; private JComboBox frequencyCombobox; private JButton saveButton; private JButton cancelButton; private int type; private Questions question; private QuestionsService questionsService = new QuestionsService(); public EditQuestionDialog(int type, Questions question) { this.type = type; this.question = question; initView(); } public void initListener(){ saveButton.addActionListener(e->{ String name = nameTextField.getText().trim(); String description = descriptionTextField.getText().trim(); String answer = answerTextField.getText().trim(); if(name.equals("")|| description.equals("")|| answer.equals("")) { JOptionPane.showMessageDialog(this, "请填写完整!"); return; } Questions questionsPo = new Questions(); questionsPo.setName(name); questionsPo.setDescription(description); questionsPo.setAnswer(answer); Integer index=frequencyCombobox.getSelectedIndex(); questionsPo.setFrequency(index==0 ? null:index); String message; boolean res; if(type==0) { res = questionsService.insert(questionsPo); message = "添加"; } else{ questionsPo.setId(question.getId()); res = questionsService.update(questionsPo); message = "修改"; } if(res) dispose(); else JOptionPane.showMessageDialog(this, message+"失败"); }); cancelButton.addActionListener(e->{ dispose(); }); } private void initView(){ setSize(400,300); setLocationRelativeTo(null);//居中 add(initPanel()); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setModal(true);//设置模态 if(type==0) setTitle("添加问题"); else{ setTitle("修改问题"); nameTextField.setText(question.getName()); descriptionTextField.setText(question.getDescription()); answerTextField.setText(question.getAnswer()); frequencyCombobox.setSelectedIndex(question.getFrequency() == null? 0:question.getFrequency()); } //细节:要先初始化监听器,再初始化界面 //初始化监听器 initListener(); //显示界面 setVisible(true); } private JPanel initPanel(){ JPanel mainPanel = new JPanel(); mainPanel.setLayout(new GridLayout(5,2)); //第一行 单词 mainPanel.add(new JLabel("问题")); nameTextField = new JTextField(); mainPanel.add(nameTextField); //第二行 定义 mainPanel.add(new JLabel("描述")); descriptionTextField = new JTextField(); mainPanel.add(descriptionTextField); //第三行 例句 mainPanel.add(new JLabel("答案")); answerTextField = new JTextField(); mainPanel.add(answerTextField); //第四行 频率 mainPanel.add(new JLabel("频率")); frequencyCombobox = new JComboBox<>(new String[]{"未指定","低频","中频","高频"}); mainPanel.add(frequencyCombobox); //第五行 按钮 saveButton = new JButton("保存"); cancelButton = new JButton("取消"); mainPanel.add(saveButton); mainPanel.add(cancelButton); return mainPanel; } }