Хорошо, так что это первый вопрос, который я задал в StackOverflow, поэтому извиняюсь, если он неясен.
По сути, я делаю программу на JavaFx , которая является системой заказа для поддельное кафе. Это для задания, и оно действительно не должно иметь общепринятого смысла, потому что моя учебная программа на самом деле не заботится о том, полезна она или нет, они просто хотят видеть, как вы кодируете случайные вещи.
В любом случае, проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь сделать так, чтобы при открытии главной страницы с именем MainPage.f xml 4 вещи были предварительно отключены / включены. Этими элементами являются PinPane, который содержит кнопки входа и метки), PrimaryPane (который содержит все кнопки, ведущие на разные страницы заказа), SettingsBtn (отправляет пользователя в настройки) и LogoutBtn (саморасширяющийся).
This это важно, потому что когда программа открывается впервые, MainPage запускается первым. Как только пользователь входит в систему и уходит на другую страницу, чтобы выбрать элемент, однако, когда он возвращается на главную страницу, где текущий порядок отображается в PrimaryPage (я фактически еще не сделал никакого кода для этого), я хочу убедиться, что отключенные / включенные состояния всех 4 элементов остаются такими же, как когда пользователь оставил go на другой странице.
В настоящее время я использую класс stati c с именем DataContainer. java, который содержит все данные, совместно используемые программой, и я подумал, что могу поместить 3 логические переменные, которые в основном просто сообщают программе о открытие MainPage, что отключено и включено.
Тем не менее, моя основная проблема заключается в том, что я не могу изменить состояние любого из этих элементов при запуске, и я понятия не имею, как это сделать. что другой мудрый.
Мой код для MainPageController. java ниже:
'' '
public class MainPageController {
@FXML private Label Price; //fx:if -> Price
@FXML public Pane PrimaryPage, PinPane; //fx:id -> PrimaryPage
@FXML public Label Pin; //fx:id -> Pin
@FXML public Button LogoutBtn, SettingsBtn;
public void Check(ActionEvent event) throws IOException{
// This is the method I use to check the entered pin against current
// saved pins.
DataContainer.DataContainer();
// This is just a method i use for testing, it adds a manager account that i can sign in with
// each time the program is opened because I haven't introduced account creation and saving
// yet
int pin = Integer.parseInt(Pin.getText());
int i = DataContainer.Users.size();
int x = 0;
while (x <= i-1){
if (DataContainer.Users.get(x).PinNumber == pin){
// In this, once the pin is verified, each element is enabled and disabled, and the
// boolean variables are set as well for future use
System.out.println("test");
DataContainer.UserIndex = x;
PrimaryPage.setDisable(false);
LogoutBtn.setDisable(false);
DataContainer.PrimaryPage = true;
Pin.setText("");
PinPane.setDisable(true);
DataContainer.PinPane = false;
break;
}
x = x + 1;
}
if (DataContainer.Users.get(DataContainer.UserIndex).Position.equals("Manager")){
SettingsBtn.setDisable(false);
DataContainer.SettingsBtn = true;
}
' ''
Это код для DataContainer. java
'' '
public class DataContainer{
public static void main(String args[]){
}
public static void DataContainer(){
Users.add(owner);
System.out.println("test");
}
static boolean PinPane = true, PrimaryPage = false, SettingsBtn = false;
// These boolean values are relevant to the MainPage application
// Their purpose is to retain the information of the state in which the user
// left the main page, i.e, if the PinPage is disabled, the PrimaryPage is enabled, etc.
// this is important as if these variables don't exist the MainPage and its elements
// go back to their default state and the user has to re-sign in.
static String firstname, lastname, position;
static int PinNo, PhoneNo, UserIndex;
public static UserVariables user = new UserVariables(firstname, lastname, position, PinNo,
PhoneNo);
static UserVariables owner = new UserVariables("Test", "User", "Manager", 1234,
0434553);
public static ArrayList<UserVariables> Users = new ArrayList<UserVariables>();
}
' ''
И, наконец, это код для FInalIA. java (Основной класс):
'' '
public class FInalIA extends Application implements Serializable {
public static void main(String args[]) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
// StackPane root = new StackPane();
Parent root = (Parent) FXMLLoader.load(getClass().getResource("MainPage.fxml"));
Scene scene = new Scene(root);
stage.setTitle("Main Page");
stage.setScene(scene);
stage.setResizable(false);
stage.show();
MainPageController.Open();
}
}
' ''
И, наконец, это код, который я собирался использовать, делая публикацию c stati c метод с именем 'Open ()', и все панели становятся равными c, и просто вызывается этот метод, когда открыта MainPage.
''
public static void Open(){
if (DataContainer.PinPane == false){
PinPane.setDisable(true);
}
else{
PinPane.setDisable(false);
}
if(DataContainer.PrimaryPage == false){
PrimaryPage.setDisable(true);
LogoutBtn.setDisable(true);
}
else{
PrimaryPage.setDisable(false);
LogoutBtn.setDisable(false);
}
if(DataContainer.SettingsBtn == false){
SettingsBtn.setDisable(true);
}
else{
SettingsBtn.setDisable(false);
}
}
'' '
Спасибо всем, кто помогает мне с этим (также вы, ребята, скажите, пожалуйста, скажите, если то, что я пишу, не является кратким и неуместным или действительно ли это хорошо)