2025年3月15日16:51:20

master
qmstyle 2025-03-15 16:51:27 +08:00
parent 4459d3fe2a
commit d8a843b2cf
9 changed files with 121 additions and 15 deletions

View File

@ -2,6 +2,7 @@ package com.zhangmeng.online.exam.ui.api;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.stage.Stage;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -23,4 +24,6 @@ public interface DataLoad {
public void deleteData(String id); public void deleteData(String id);
public void editData(String s, Stage stage);
} }

View File

@ -26,20 +26,25 @@ import java.util.Map;
*/ */
public class UserForm extends Form { public class UserForm extends Form {
private TextField username_field;
private PasswordField password_field;
private TextField phone_field;
private TextField email_field;
public UserForm() { public UserForm() {
Label username_label = new Label("用户名:"); Label username_label = new Label("用户名:");
username_label.setLayoutX(83.0); username_label.setLayoutX(83.0);
username_label.setLayoutY(64.0); username_label.setLayoutY(64.0);
TextField username_field = new TextField(); username_field = new TextField();
username_field.setLayoutX(162.0); username_field.setLayoutX(162.0);
username_field.setLayoutY(60.0); username_field.setLayoutY(60.0);
username_field.setPrefHeight(23.0); username_field.setPrefHeight(23.0);
username_field.setPrefWidth(289.0); username_field.setPrefWidth(289.0);
username_field.setPromptText("请输入用户名"); username_field.setPromptText("请输入用户名");
PasswordField password_field = new PasswordField(); password_field = new PasswordField();
password_field.setLayoutX(162.0); password_field.setLayoutX(162.0);
password_field.setLayoutY(117.0); password_field.setLayoutY(117.0);
password_field.setPrefHeight(23.0); password_field.setPrefHeight(23.0);
@ -54,7 +59,7 @@ public class UserForm extends Form {
phone_label.setLayoutX(87.0); phone_label.setLayoutX(87.0);
phone_label.setLayoutY(169.0); phone_label.setLayoutY(169.0);
TextField phone_field = new TextField(); phone_field = new TextField();
phone_field.setLayoutX(162.0); phone_field.setLayoutX(162.0);
phone_field.setLayoutY(165.0); phone_field.setLayoutY(165.0);
phone_field.setPrefHeight(23.0); phone_field.setPrefHeight(23.0);
@ -65,7 +70,7 @@ public class UserForm extends Form {
email_label.setLayoutX(87.0); email_label.setLayoutX(87.0);
email_label.setLayoutY(224.0); email_label.setLayoutY(224.0);
TextField email_field = new TextField(); email_field = new TextField();
email_field.setLayoutX(162.0); email_field.setLayoutX(162.0);
email_field.setLayoutY(220.0); email_field.setLayoutY(220.0);
email_field.setPrefHeight(23.0); email_field.setPrefHeight(23.0);
@ -106,4 +111,37 @@ public class UserForm extends Form {
submit_button, submit_button,
password_label); password_label);
} }
public TextField getUsername_field() {
return username_field;
}
public void setUsername_field(TextField username_field) {
this.username_field = username_field;
}
public PasswordField getPassword_field() {
return password_field;
}
public void setPassword_field(PasswordField password_field) {
this.password_field = password_field;
}
public TextField getPhone_field() {
return phone_field;
}
public void setPhone_field(TextField phone_field) {
this.phone_field = phone_field;
}
public TextField getEmail_field() {
return email_field;
}
public void setEmail_field(TextField email_field) {
this.email_field = email_field;
}
} }

View File

@ -8,6 +8,7 @@ import com.zhangmeng.online.exam.ui.api.DataLoad;
import com.zhangmeng.online.exam.ui.utils.HttpUtils; import com.zhangmeng.online.exam.ui.utils.HttpUtils;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.stage.Stage;
import java.util.*; import java.util.*;
@ -61,4 +62,9 @@ public class PermissionDataLoad implements DataLoad {
public void deleteData(String id) { public void deleteData(String id) {
} }
@Override
public void editData(String id, Stage stage) {
}
} }

View File

@ -8,6 +8,7 @@ import com.zhangmeng.online.exam.ui.api.DataLoad;
import com.zhangmeng.online.exam.ui.utils.HttpUtils; import com.zhangmeng.online.exam.ui.utils.HttpUtils;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.stage.Stage;
import java.util.*; import java.util.*;
@ -62,4 +63,9 @@ public class QuestionDataLoad implements DataLoad {
public Map<String, Object> saveForm(Map<String, Object> map) { public Map<String, Object> saveForm(Map<String, Object> map) {
return null; return null;
} }
@Override
public void editData(String s, Stage stage) {
}
} }

View File

@ -8,6 +8,7 @@ import com.zhangmeng.online.exam.ui.api.DataLoad;
import com.zhangmeng.online.exam.ui.utils.HttpUtils; import com.zhangmeng.online.exam.ui.utils.HttpUtils;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.stage.Stage;
import java.util.*; import java.util.*;
@ -63,4 +64,9 @@ public class RoleDataLoad implements DataLoad {
public void deleteData(String id) { public void deleteData(String id) {
} }
@Override
public void editData(String id, Stage stage) {
}
} }

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zhangmeng.online.exam.ui.api.DataLoad; import com.zhangmeng.online.exam.ui.api.DataLoad;
import com.zhangmeng.online.exam.ui.api.form.UserForm;
import com.zhangmeng.online.exam.ui.utils.AlertUtils; import com.zhangmeng.online.exam.ui.utils.AlertUtils;
import com.zhangmeng.online.exam.ui.utils.HttpUtils; import com.zhangmeng.online.exam.ui.utils.HttpUtils;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
@ -12,6 +13,7 @@ import java.util.*;
import com.zhangmeng.online.exam.ui.api.ApiUtils; import com.zhangmeng.online.exam.ui.api.ApiUtils;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.stage.Stage;
/** /**
* @author zm * @author zm
@ -37,13 +39,13 @@ public class UserDataLoad implements DataLoad {
Map<String, SimpleStringProperty> userMap = new HashMap<>(); Map<String, SimpleStringProperty> userMap = new HashMap<>();
userMap.put("序号", new SimpleStringProperty(user.getString("id"))); userMap.put("序号", new SimpleStringProperty(user.getString("id")));
userMap.put("用户名", new SimpleStringProperty(user.getString("username"))); userMap.put("用户名", new SimpleStringProperty(user.getString("username")));
userMap.put("电子邮箱", new SimpleStringProperty(user.getString("email")));
userMap.put("手机号码", new SimpleStringProperty(user.getString("phone"))); userMap.put("手机号码", new SimpleStringProperty(user.getString("phone")));
userMap.put("电子邮箱", new SimpleStringProperty(user.getString("email")));
userMap.put("id", new SimpleStringProperty(user.getString("id"))); userMap.put("id", new SimpleStringProperty(user.getString("id")));
userMapList.add(userMap); userMapList.add(userMap);
} }
ApiUtils.DataView dataView = new ApiUtils.DataView(Arrays.asList("序号", "用户名", "电子邮箱", "手机号码"), userMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total); ApiUtils.DataView dataView = new ApiUtils.DataView(Arrays.asList("序号", "用户名","手机号码", "电子邮箱" ), userMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total);
dataView.setDataLoad(this); dataView.setDataLoad(this);
return dataView; return dataView;
} }
@ -82,4 +84,25 @@ public class UserDataLoad implements DataLoad {
AlertUtils.alert_warning("删除失败!"); AlertUtils.alert_warning("删除失败!");
} }
} }
@Override
public void editData(String id,Stage stage) {
UserForm userForm = new UserForm();
Map<String, Object> map = new HashMap<>();
map.put("id", id);
String result = HttpUtils.GET(ApiUtils.API_URL + "/user/getUser", map);
JSONObject jsonObject = JSON.parseObject(result);
JSONObject data = jsonObject.getJSONObject("data");
String username = data.getString("username");
userForm.getUsername_field().setText(username);
String email = data.getString("email");
userForm.getEmail_field().setText(email);
String phone = data.getString("phone");
userForm.getPhone_field().setText(phone);
String password = data.getString("password");
userForm.getPassword_field().setText(password);
AlertUtils.alert("编辑用户信息", (Parent) userForm, stage);
}
} }

View File

@ -59,12 +59,12 @@ public class DynamicTableComponent extends VBox {
tableView.prefHeightProperty().bind(this.heightProperty()); tableView.prefHeightProperty().bind(this.heightProperty());
tableView.prefWidthProperty().bind(this.widthProperty()); tableView.prefWidthProperty().bind(this.widthProperty());
// 动态生成列(示例字段)‌:ml-citation{ref="3,4" data="citationList"} // 动态生成列(示例字段)‌:ml-citation{ref="3,4" data="citationList"}
List<String> columns ; List<String> columns = keys ;
if (!dataList.isEmpty()){ // if (!dataList.isEmpty()){
columns= Arrays.asList(dataList.get(0).keySet().toArray(new String[0])).stream().filter(key -> !key.equals("id")).toList(); // columns= Arrays.asList(dataList.get(0).keySet().toArray(new String[0])).stream().filter(key -> !key.equals("id")).toList();
}else { // }else {
columns=keys; // columns=keys;
} // }
List<String> finalColumns = columns; List<String> finalColumns = columns;
columns.forEach(col -> { columns.forEach(col -> {
TableColumn<Map<String,SimpleStringProperty>, String> column = new TableColumn<>(col); TableColumn<Map<String,SimpleStringProperty>, String> column = new TableColumn<>(col);
@ -84,8 +84,24 @@ public class DynamicTableComponent extends VBox {
data.addAll(dataList); data.addAll(dataList);
ContextMenu contextMenu = new ContextMenu(); ContextMenu contextMenu = new ContextMenu();
MenuItem menuItem = new MenuItem("删除");
menuItem.setOnAction(new EventHandler<ActionEvent>() { MenuItem editItem = new MenuItem("编辑");
editItem.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Map<String, SimpleStringProperty> selectedItem = tableView.getSelectionModel().getSelectedItem();
if (selectedItem!= null) {
SimpleStringProperty id = selectedItem.get("id");
if (id!= null) {
callBack.edit(id.get(), DynamicTableComponent.this);
}
}
}
});
MenuItem deleteItem = new MenuItem("删除");
deleteItem.setOnAction(new EventHandler<ActionEvent>() {
@Override @Override
public void handle(ActionEvent event) { public void handle(ActionEvent event) {
Map<String, SimpleStringProperty> selectedItem = tableView.getSelectionModel().getSelectedItem(); Map<String, SimpleStringProperty> selectedItem = tableView.getSelectionModel().getSelectedItem();
@ -98,7 +114,7 @@ public class DynamicTableComponent extends VBox {
data.remove(tableView.getSelectionModel().getSelectedItem()); data.remove(tableView.getSelectionModel().getSelectedItem());
} }
}); });
contextMenu.getItems().add(menuItem); contextMenu.getItems().addAll(editItem,deleteItem);
tableView.setContextMenu(contextMenu); tableView.setContextMenu(contextMenu);
///添加按钮 ///添加按钮

View File

@ -27,4 +27,6 @@ public interface DynamicTableComponentCallBack {
void delete(String s); void delete(String s);
void edit(String s,DynamicTableComponent dynamicTableComponent);
} }

View File

@ -57,6 +57,12 @@ public class DynamicTableComponentCallBackImpl implements DynamicTableComponentC
dataLoad.deleteData(s); dataLoad.deleteData(s);
} }
@Override
public void edit(String id,DynamicTableComponent table) {
Stage stage = (Stage) table.getScene().getWindow();
dataLoad.editData(id, stage);
}
public DataLoad getDataLoad() { public DataLoad getDataLoad() {
return dataLoad; return dataLoad;
} }