Compare commits

...

2 Commits

Author SHA1 Message Date
6cb9a8f864 完成了修改 2025-12-28 22:38:23 +08:00
9aa97edb0e 完成了修改 2025-12-28 21:58:11 +08:00
6 changed files with 176 additions and 8 deletions

View File

@@ -82,7 +82,10 @@ public class QuestionsDao {
stmt.setString(1, question.getName()); stmt.setString(1, question.getName());
stmt.setString(2, question.getDescription()); stmt.setString(2, question.getDescription());
stmt.setString(3, question.getAnswer()); stmt.setString(3, question.getAnswer());
stmt.setInt(4, question.getFrequency()); if(question.getFrequency()==null)
stmt.setInt(4, 0);
else
stmt.setInt(4, question.getFrequency());
row = stmt.executeUpdate(); row = stmt.executeUpdate();
stmt.close(); stmt.close();
@@ -114,20 +117,23 @@ public class QuestionsDao {
} }
return row > 0; return row > 0;
} }
public boolean updata(Questions question){ public boolean update(Questions question){
int row = 0; int row = 0;
//1. 从连接池中拿到连接 //1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection(); Connection conn = DBConnectionPool.getConnection();
if(conn==null) if(conn==null)
return false; return false;
//2. 创建Statement对象 //2. 创建Statement对象
String sql = "updata questions set name = ?,description = ?,answer = ?,frequency=? where id = ?"; String sql = "update questions set name = ?,description = ?,answer = ?,frequency=? where id = ?";
try{ try{
PreparedStatement stmt = conn.prepareStatement(sql); PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, question.getName()); stmt.setString(1, question.getName());
stmt.setString(2, question.getDescription()); stmt.setString(2, question.getDescription());
stmt.setString(3, question.getAnswer()); stmt.setString(3, question.getAnswer());
stmt.setInt(4, question.getFrequency()); if(question.getFrequency()==null)
stmt.setInt(4, 0);
else
stmt.setInt(4, question.getFrequency());
stmt.setInt(5, question.getId()); stmt.setInt(5, question.getId());
row = stmt.executeUpdate(); row = stmt.executeUpdate();
stmt.close(); stmt.close();

View File

@@ -5,7 +5,7 @@ public class Questions {
private String name; private String name;
private String description; private String description;
private String answer; private String answer;
private int frequency; private Integer frequency;
public int getId() { public int getId() {
return id; return id;
@@ -39,11 +39,11 @@ public class Questions {
this.answer = answer; this.answer = answer;
} }
public int getFrequency() { public Integer getFrequency() {
return frequency; return frequency;
} }
public void setFrequency(int frequency) { public void setFrequency(Integer frequency) {
this.frequency = frequency; this.frequency = frequency;
} }
} }

View File

@@ -4,8 +4,16 @@ import java.util.*;
public class GlobalData { public class GlobalData {
public static final Map<Integer,String> FREQUENCY_MAP = new HashMap<>(); public static final Map<Integer,String> FREQUENCY_MAP = new HashMap<>();
static{ static{
FREQUENCY_MAP.put(0,"未指定");
FREQUENCY_MAP.put(1,"低频"); FREQUENCY_MAP.put(1,"低频");
FREQUENCY_MAP.put(2,"中频"); FREQUENCY_MAP.put(2,"中频");
FREQUENCY_MAP.put(3,"高频"); FREQUENCY_MAP.put(3,"高频");
} }
public static Integer getFrequencyByValue(String value){
for(Map.Entry<Integer,String> entry:FREQUENCY_MAP.entrySet()) {
if (entry.getValue().equals(value))
return entry.getKey();
}
return 0;
}
} }

View File

@@ -45,4 +45,7 @@ public class QuestionsService {
public void delete(Integer id){ public void delete(Integer id){
questionsDao.delete(id); questionsDao.delete(id);
} }
public boolean update(Questions question){
return questionsDao.update(question);
}
} }

View File

@@ -0,0 +1,109 @@
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;
}
}

View File

@@ -2,9 +2,13 @@ package view;
import javax.swing.*; import javax.swing.*;
import javax.swing.table.DefaultTableModel; import javax.swing.table.DefaultTableModel;
import java.awt.*; import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector; import java.util.Vector;
import backend.model.Questions;
import backend.service.impl.QuestionsService; import backend.service.impl.QuestionsService;
import backend.model.enums.GlobalData;
public class QuestionsPanel extends JPanel{ public class QuestionsPanel extends JPanel{
private QuestionsService questionsService = new QuestionsService(); private QuestionsService questionsService = new QuestionsService();
@@ -30,7 +34,7 @@ public class QuestionsPanel extends JPanel{
} }
public void initListener(){ public void initListener(){
queryButton.addActionListener(e->{ queryButton.addActionListener(e->{
int frequency = frequencyComboBox.getSelectedIndex()==0?null:frequencyComboBox.getSelectedIndex(); Integer frequency = frequencyComboBox.getSelectedIndex()==0?null:frequencyComboBox.getSelectedIndex();
String key = keyTextField.getText(); String key = keyTextField.getText();
//清楚已有数据 //清楚已有数据
model.setRowCount(0); model.setRowCount(0);
@@ -51,6 +55,44 @@ public class QuestionsPanel extends JPanel{
} }
} }
}); });
//添加事件:打开对话框
addButton.addActionListener(e->{
new EditQuestionDialog(0,null);
});
editButton.addActionListener(e->{
int row = table.getSelectedRow();
if(row>=0)
openEditDialog(row);
});
//双击某行弹出修改对话框
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2){
int row = table.getSelectedRow();
openEditDialog(row);
}
}
});
}
private void openEditDialog(int row){
Vector<String> data = tableData.get(row);
Questions questions = new Questions();
questions.setId(Integer.parseInt(data.get(0)));
questions.setName(data.get(1));
questions.setDescription(data.get(2));
questions.setAnswer(data.get(3));
questions.setFrequency(GlobalData.getFrequencyByValue(data.get(4)));
new EditQuestionDialog(1, questions);
//修改成功后刷新并定位修改位置
tableData = questionsService.getAll();
refreshData();
table.setRowSelectionInterval(row,row);
scrollPane.getVerticalScrollBar().setValue(row*table.getRowHeight());
scrollPane.getHorizontalScrollBar().setValue(0);
scrollPane.revalidate();
} }
public QuestionsPanel(){ public QuestionsPanel(){
initView(); initView();