2025年3月18日15:01:15
parent
8a42e4d667
commit
9097ae4925
|
|
@ -18,9 +18,6 @@ import javafx.stage.Window;
|
||||||
public class LoginPage extends AnchorPane {
|
public class LoginPage extends AnchorPane {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <AnchorPane prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.online.exam.ui.admin.LoginController">
|
|
||||||
* <children>
|
|
||||||
* <GridPane layoutX="485.0" layoutY="193.0" prefHeight="183.0" prefWidth="286.0" AnchorPane.bottomAnchor="281.0" AnchorPane.leftAnchor="485.0" AnchorPane.rightAnchor="429.0" AnchorPane.topAnchor="185.0">
|
|
||||||
* <columnConstraints>
|
* <columnConstraints>
|
||||||
* <ColumnConstraints hgrow="SOMETIMES" maxWidth="229.0" minWidth="10.0" prefWidth="38.0" />
|
* <ColumnConstraints hgrow="SOMETIMES" maxWidth="229.0" minWidth="10.0" prefWidth="38.0" />
|
||||||
* <ColumnConstraints hgrow="SOMETIMES" maxWidth="423.0" minWidth="10.0" prefWidth="248.0" />
|
* <ColumnConstraints hgrow="SOMETIMES" maxWidth="423.0" minWidth="10.0" prefWidth="248.0" />
|
||||||
|
|
@ -37,83 +34,83 @@ public class LoginPage extends AnchorPane {
|
||||||
* <Button mnemonicParsing="false" prefHeight="23.0" prefWidth="178.0" text="登录" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
* <Button mnemonicParsing="false" prefHeight="23.0" prefWidth="178.0" text="登录" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
||||||
* <PasswordField GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
* <PasswordField GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||||
* </children>
|
* </children>
|
||||||
* </GridPane>
|
|
||||||
* </children>
|
|
||||||
* </AnchorPane>
|
|
||||||
*/
|
*/
|
||||||
public LoginPage() {
|
public LoginPage() {
|
||||||
|
|
||||||
setPrefHeight(649.0);
|
ColumnConstraints column1 = new ColumnConstraints();
|
||||||
setPrefWidth(1200.0);
|
column1.setHgrow(Priority.SOMETIMES);
|
||||||
|
column1.setMaxWidth(229.0);
|
||||||
|
column1.setMinWidth(10.0);
|
||||||
|
column1.setPrefWidth(38.0);
|
||||||
|
|
||||||
// GridPane
|
ColumnConstraints column2 = new ColumnConstraints();
|
||||||
|
column2.setHgrow(Priority.SOMETIMES);
|
||||||
|
column2.setMaxWidth(423.0);
|
||||||
|
column2.setMinWidth(10.0);
|
||||||
|
column2.setPrefWidth(248.0);
|
||||||
|
|
||||||
|
RowConstraints row1 = new RowConstraints();
|
||||||
|
row1.setMaxHeight(174.0);
|
||||||
|
row1.setMinHeight(10.0);
|
||||||
|
row1.setPrefHeight(60.0);
|
||||||
|
row1.setVgrow(Priority.SOMETIMES);
|
||||||
|
|
||||||
|
RowConstraints row2 = new RowConstraints();
|
||||||
|
row2.setMaxHeight(206.0);
|
||||||
|
row2.setMinHeight(10.0);
|
||||||
|
row2.setPrefHeight(47.0);
|
||||||
|
row2.setVgrow(Priority.SOMETIMES);
|
||||||
|
|
||||||
|
RowConstraints row3 = new RowConstraints();
|
||||||
|
row3.setMaxHeight(238.0);
|
||||||
|
row3.setMinHeight(10.0);
|
||||||
|
row3.setPrefHeight(52.0);
|
||||||
|
row3.setVgrow(Priority.SOMETIMES);
|
||||||
|
|
||||||
|
// <GridPane layoutX="485.0" layoutY="59.0" prefHeight="159.0" prefWidth="275.0" AnchorPane.bottomAnchor="97.0" AnchorPane.leftAnchor="125.0" AnchorPane.rightAnchor="127.0" AnchorPane.topAnchor="59.0">
|
||||||
GridPane gridPane = new GridPane();
|
GridPane gridPane = new GridPane();
|
||||||
|
gridPane.getColumnConstraints().addAll(column1, column2);
|
||||||
|
gridPane.getRowConstraints().addAll(row1, row2, row3);
|
||||||
gridPane.setLayoutX(485.0);
|
gridPane.setLayoutX(485.0);
|
||||||
gridPane.setLayoutY(193.0);
|
gridPane.setLayoutY(59.0);
|
||||||
gridPane.setPrefHeight(183.0);
|
gridPane.setPrefHeight(159.0);
|
||||||
gridPane.setPrefWidth(286.0);
|
gridPane.setPrefWidth(275.0);
|
||||||
AnchorPane.setBottomAnchor(gridPane, 281.0);
|
AnchorPane.setBottomAnchor(gridPane,97.0);
|
||||||
AnchorPane.setLeftAnchor(gridPane, 485.0);
|
AnchorPane.setLeftAnchor(gridPane,125.0);
|
||||||
AnchorPane.setRightAnchor(gridPane, 429.0);
|
AnchorPane.setRightAnchor(gridPane,127.0);
|
||||||
AnchorPane.setTopAnchor(gridPane, 185.0);
|
AnchorPane.setTopAnchor(gridPane,59.0);
|
||||||
|
|
||||||
// columnConstraints
|
|
||||||
ColumnConstraints columnConstraints1 = new ColumnConstraints();
|
|
||||||
columnConstraints1.setHgrow(Priority.SOMETIMES);
|
|
||||||
columnConstraints1.setMaxWidth(229.0);
|
|
||||||
columnConstraints1.setMinWidth(10.0);
|
|
||||||
columnConstraints1.setPrefWidth(38.0);
|
|
||||||
ColumnConstraints columnConstraints2 = new ColumnConstraints();
|
|
||||||
columnConstraints2.setHgrow(Priority.SOMETIMES);
|
|
||||||
columnConstraints2.setMaxWidth(423.0);
|
|
||||||
columnConstraints2.setMinWidth(10.0);
|
|
||||||
columnConstraints2.setPrefWidth(248.0);
|
|
||||||
gridPane.getColumnConstraints().addAll(columnConstraints1, columnConstraints2);
|
|
||||||
|
|
||||||
// rowConstraints
|
|
||||||
RowConstraints rowConstraints1 = new RowConstraints();
|
|
||||||
rowConstraints1.setMaxHeight(174.0);
|
|
||||||
rowConstraints1.setMinHeight(10.0);
|
|
||||||
rowConstraints1.setPrefHeight(60.0);
|
|
||||||
rowConstraints1.setVgrow(Priority.SOMETIMES);
|
|
||||||
|
|
||||||
RowConstraints rowConstraints2 = new RowConstraints();
|
|
||||||
rowConstraints2.setMaxHeight(206.0);
|
|
||||||
rowConstraints2.setMinHeight(10.0);
|
|
||||||
rowConstraints2.setPrefHeight(47.0);
|
|
||||||
rowConstraints2.setVgrow(Priority.SOMETIMES);
|
|
||||||
|
|
||||||
RowConstraints rowConstraints3 = new RowConstraints();
|
|
||||||
rowConstraints3.setMaxHeight(238.0);
|
|
||||||
rowConstraints3.setMinHeight(10.0);
|
|
||||||
rowConstraints3.setPrefHeight(52.0);
|
|
||||||
rowConstraints3.setVgrow(Priority.SOMETIMES);
|
|
||||||
gridPane.getRowConstraints().addAll(rowConstraints1, rowConstraints2, rowConstraints3);
|
|
||||||
|
|
||||||
// children
|
|
||||||
Label label1 = new Label("账号");
|
Label label1 = new Label("账号");
|
||||||
Label label2 = new Label("密码");
|
Label label2 = new Label("密码");
|
||||||
TextField textField1 = new TextField();
|
TextField textField1 = new TextField();
|
||||||
|
PasswordField passwordField1 = new PasswordField();
|
||||||
|
Button button1 = new Button("登录");
|
||||||
|
button1.setMnemonicParsing(false);
|
||||||
|
button1.setPrefHeight(23.0);
|
||||||
|
button1.setPrefWidth(178.0);
|
||||||
|
|
||||||
gridPane.add(label1, 0, 0);
|
gridPane.add(label1, 0, 0);
|
||||||
gridPane.add(label2, 0, 1);
|
gridPane.add(label2, 0, 1);
|
||||||
gridPane.add(textField1, 1, 0);
|
gridPane.add(textField1, 1, 0);
|
||||||
|
|
||||||
Button button1 = new Button("登录");
|
|
||||||
PasswordField passwordField1 = new PasswordField();
|
|
||||||
gridPane.add(button1, 1, 2);
|
|
||||||
gridPane.add(passwordField1, 1, 1);
|
gridPane.add(passwordField1, 1, 1);
|
||||||
|
gridPane.add(button1, 1, 2);
|
||||||
|
|
||||||
getChildren().add(gridPane);
|
getChildren().add(gridPane);
|
||||||
|
|
||||||
button1.setOnAction(event -> {
|
button1.setOnAction(event -> {
|
||||||
System.out.println("登录");
|
|
||||||
Scene scene = button1.getScene();
|
Scene scene = button1.getScene();
|
||||||
IndexPage shortAnswerComponent = new IndexPage();
|
|
||||||
scene.setRoot(shortAnswerComponent);
|
|
||||||
Stage window = (Stage) scene.getWindow();
|
Stage window = (Stage) scene.getWindow();
|
||||||
window.setResizable(true);
|
window.close();
|
||||||
// window.setFullScreen(true);
|
|
||||||
|
Stage stage = new Stage();
|
||||||
|
IndexPage shortAnswerComponent = new IndexPage();
|
||||||
|
scene = new Scene(shortAnswerComponent, 1280, 720);
|
||||||
|
stage.setScene(scene);
|
||||||
|
stage.setTitle("在线考试系统");
|
||||||
|
stage.show();
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public class ApiUtils {
|
||||||
|
|
||||||
public static final String API_URL = "http://localhost:8080";
|
public static final String API_URL = "http://localhost:8080";
|
||||||
|
|
||||||
public static final int PAGE_SIZE = 3;
|
public static final int PAGE_SIZE = 25;
|
||||||
|
|
||||||
public static final int PAGE_NUM = 1;
|
public static final int PAGE_NUM = 1;
|
||||||
|
|
||||||
|
|
@ -86,6 +86,11 @@ public class ApiUtils {
|
||||||
return dataLoad.loadData(PAGE_NUM,PAGE_SIZE);
|
return dataLoad.loadData(PAGE_NUM,PAGE_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DataView getQuestionOptionList() {
|
||||||
|
DataLoad dataLoad = new QuestionOptionDataLoad();
|
||||||
|
return dataLoad.loadData(PAGE_NUM,PAGE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
public static class DataView {
|
public static class DataView {
|
||||||
|
|
||||||
private List<String> keys;
|
private List<String> keys;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
package com.zhangmeng.online.exam.ui.api.model;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.zhangmeng.online.exam.ui.api.ApiUtils;
|
||||||
|
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.HttpUtils;
|
||||||
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
|
import javafx.scene.Parent;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zm
|
||||||
|
* @date 2025/3/18 11:37
|
||||||
|
* @version: 1.0
|
||||||
|
*/
|
||||||
|
public class OptionDataLoad implements DataLoad {
|
||||||
|
|
||||||
|
private Parent form;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiUtils.DataView loadData(Integer pageNum, Integer pageSize) {
|
||||||
|
Map<String, Object> params = new HashMap<>();
|
||||||
|
params.put("pageNum", pageNum.toString());
|
||||||
|
params.put("pageSize", pageSize.toString());
|
||||||
|
String userListData = HttpUtils.GET(ApiUtils.API_URL + "/option/list", params);
|
||||||
|
JSONObject jsonObject = JSON.parseObject(userListData);
|
||||||
|
JSONArray data = jsonObject.getJSONArray("data");
|
||||||
|
int total = jsonObject.getIntValue("total");
|
||||||
|
List<Map<String, SimpleStringProperty>> userMapList = new ArrayList<>();
|
||||||
|
for (Object datum : data) {
|
||||||
|
JSONObject user = (JSONObject) datum;
|
||||||
|
Map<String, SimpleStringProperty> userMap = new HashMap<>();
|
||||||
|
userMap.put("序号", new SimpleStringProperty(user.getString("id")));
|
||||||
|
userMap.put("用户名", new SimpleStringProperty(user.getString("username")));
|
||||||
|
userMap.put("手机号码", new SimpleStringProperty(user.getString("phone")));
|
||||||
|
userMap.put("电子邮箱", new SimpleStringProperty(user.getString("email")));
|
||||||
|
userMap.put("id", new SimpleStringProperty(user.getString("id")));
|
||||||
|
userMapList.add(userMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiUtils.DataView dataView = new ApiUtils.DataView(Arrays.asList("序号", "用户名","手机号码", "电子邮箱" ), userMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total);
|
||||||
|
dataView.setDataLoad(this);
|
||||||
|
return dataView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setForm(Parent view) {
|
||||||
|
this.form = view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Parent getForm() {
|
||||||
|
return this.form;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> saveForm(Map<String, Object> map) {
|
||||||
|
String result = HttpUtils.POST(ApiUtils.API_URL + "/user/save", map);
|
||||||
|
JSONObject jsonObject = JSON.parseObject(result);
|
||||||
|
if (jsonObject.getIntValue("code") == 200){
|
||||||
|
AlertUtils.alert_msg("保存成功!");
|
||||||
|
}else {
|
||||||
|
AlertUtils.alert_warning("保存失败!");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteData(String id) {
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put("id", id);
|
||||||
|
String result = HttpUtils.POST(ApiUtils.API_URL + "/user/delete", map);
|
||||||
|
JSONObject jsonObject = JSON.parseObject(result);
|
||||||
|
if (jsonObject.getIntValue("code") == 200){
|
||||||
|
AlertUtils.alert_msg("删除成功!");
|
||||||
|
}else {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -35,12 +35,12 @@ public class QuestionDataLoad implements DataLoad {
|
||||||
JSONObject permission = (JSONObject) datum;
|
JSONObject permission = (JSONObject) datum;
|
||||||
Map<String, SimpleStringProperty> userMap = new HashMap<>();
|
Map<String, SimpleStringProperty> userMap = new HashMap<>();
|
||||||
userMap.put("序号", new SimpleStringProperty(permission.getString("id")));
|
userMap.put("序号", new SimpleStringProperty(permission.getString("id")));
|
||||||
userMap.put("权限名称", new SimpleStringProperty(permission.getString("name")));
|
userMap.put("题目", new SimpleStringProperty(permission.getString("name")));
|
||||||
userMap.put("描述", new SimpleStringProperty(permission.getString("desc")));
|
userMap.put("题目类型", new SimpleStringProperty(permission.getString("type")));
|
||||||
userMap.put("权限路径", new SimpleStringProperty(permission.getString("url")));
|
userMap.put("所属学科", new SimpleStringProperty(permission.getString("subject")));
|
||||||
questionMapList.add(userMap);
|
questionMapList.add(userMap);
|
||||||
}
|
}
|
||||||
return new ApiUtils.DataView(Arrays.asList("序号", "权限名称", "描述", "权限路径"), questionMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total);
|
return new ApiUtils.DataView(Arrays.asList("序号", "题目", "题目类型", "所属学科"), questionMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,14 +37,15 @@ public class QuestionOptionDataLoad implements DataLoad {
|
||||||
JSONObject user = (JSONObject) datum;
|
JSONObject user = (JSONObject) datum;
|
||||||
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("name")));
|
||||||
userMap.put("手机号码", new SimpleStringProperty(user.getString("phone")));
|
userMap.put("选项内容", new SimpleStringProperty(user.getString("optionContent")));
|
||||||
userMap.put("电子邮箱", new SimpleStringProperty(user.getString("email")));
|
userMap.put("是否为正确答案", new SimpleStringProperty(user.getString("isAnswer")));
|
||||||
|
userMap.put("解析", new SimpleStringProperty(user.getString("explanation")));
|
||||||
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("序号", "选项名称", "选项内容", "是否为正确答案", "解析", "id" ), userMapList).setDataLoad(this).setPageNum(pageNum).setPageSize(pageSize).setTotal(total);
|
||||||
dataView.setDataLoad(this);
|
dataView.setDataLoad(this);
|
||||||
return dataView;
|
return dataView;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,13 +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 = keys ;
|
List<String> columns = keys.stream().filter(key -> !key.equals("id")).toList() ;
|
||||||
// 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;
|
|
||||||
columns.forEach(col -> {
|
columns.forEach(col -> {
|
||||||
TableColumn<Map<String,SimpleStringProperty>, String> column = new TableColumn<>(col);
|
TableColumn<Map<String,SimpleStringProperty>, String> column = new TableColumn<>(col);
|
||||||
// 数据绑定:ml-citation{ref="1,3" data="citationList"}
|
// 数据绑定:ml-citation{ref="1,3" data="citationList"}
|
||||||
|
|
@ -77,7 +76,7 @@ public class DynamicTableComponent extends VBox {
|
||||||
row.get(col).set(event.getNewValue());
|
row.get(col).set(event.getNewValue());
|
||||||
});
|
});
|
||||||
|
|
||||||
column.prefWidthProperty().bind(tableView.widthProperty().divide(finalColumns.size()));
|
column.prefWidthProperty().bind(tableView.widthProperty().divide(columns.size()));
|
||||||
|
|
||||||
tableView.getColumns().add(column);
|
tableView.getColumns().add(column);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,7 @@ public class SideMenu extends VBox {
|
||||||
case "/permission/list" -> init_table(hbox, ApiUtils.getPermissionList());
|
case "/permission/list" -> init_table(hbox, ApiUtils.getPermissionList());
|
||||||
case "/question/list" -> init_table(hbox, ApiUtils.getQuestionList());
|
case "/question/list" -> init_table(hbox, ApiUtils.getQuestionList());
|
||||||
case "/subject/list" -> init_table(hbox, ApiUtils.getSubjectList());
|
case "/subject/list" -> init_table(hbox, ApiUtils.getSubjectList());
|
||||||
|
case "/option/list" -> init_table(hbox, ApiUtils.getQuestionOptionList());
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,17 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import javafx.scene.layout.AnchorPane?>
|
|
||||||
<?import javafx.scene.layout.GridPane?>
|
|
||||||
<?import javafx.scene.layout.ColumnConstraints?>
|
|
||||||
<?import javafx.scene.layout.RowConstraints?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.TextField?>
|
|
||||||
<?import javafx.scene.control.PasswordField?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.Button?>
|
||||||
<AnchorPane prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19"
|
<?import javafx.scene.control.Label?>
|
||||||
xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.online.exam.ui.admin.LoginController">
|
<?import javafx.scene.control.PasswordField?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
|
<?import javafx.scene.layout.ColumnConstraints?>
|
||||||
|
<?import javafx.scene.layout.GridPane?>
|
||||||
|
<?import javafx.scene.layout.RowConstraints?>
|
||||||
|
|
||||||
|
<AnchorPane prefHeight="315.0" prefWidth="527.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.online.exam.ui.admin.LoginController">
|
||||||
<children>
|
<children>
|
||||||
<GridPane layoutX="485.0" layoutY="193.0" prefHeight="183.0" prefWidth="286.0" AnchorPane.bottomAnchor="281.0"
|
<GridPane layoutX="485.0" layoutY="59.0" prefHeight="159.0" prefWidth="275.0" AnchorPane.bottomAnchor="97.0" AnchorPane.leftAnchor="125.0" AnchorPane.rightAnchor="127.0" AnchorPane.topAnchor="59.0">
|
||||||
AnchorPane.leftAnchor="485.0" AnchorPane.rightAnchor="429.0" AnchorPane.topAnchor="185.0">
|
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="229.0" minWidth="10.0" prefWidth="38.0" />
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="229.0" minWidth="10.0" prefWidth="38.0" />
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="423.0" minWidth="10.0" prefWidth="248.0" />
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="423.0" minWidth="10.0" prefWidth="248.0" />
|
||||||
|
|
@ -26,8 +25,7 @@
|
||||||
<Label text="账号" />
|
<Label text="账号" />
|
||||||
<Label text="密码" GridPane.rowIndex="1" />
|
<Label text="密码" GridPane.rowIndex="1" />
|
||||||
<TextField GridPane.columnIndex="1" />
|
<TextField GridPane.columnIndex="1" />
|
||||||
<Button mnemonicParsing="false" prefHeight="23.0" prefWidth="178.0" text="登录" GridPane.columnIndex="1"
|
<Button mnemonicParsing="false" prefHeight="23.0" prefWidth="178.0" text="登录" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
||||||
GridPane.rowIndex="2"/>
|
|
||||||
<PasswordField GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
<PasswordField GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue