2016-11-26 35 views
0

私はこのJavaコードで助けが必要です。私はログインシーン、管理シーン、プレーヤーシーンの3つのシーンを持っています。プログラムを実行してそのユーザーとパスワードを入力すると、2番目のユーザーが開きます。今問題は、2番目のシーンが開いていないことです。それはデータベースにも接続していますが、その2番目のシーンは開いていません。私はコードをチェックして、私はそれに何か問題を見ることができません。何か起こっている私を助けてください何かができますか?JavaFX、FXML第2シーンが開かない

ここに私のメインコードです。ここで

import java.io.IOException; 
import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

public class GiantsLogin extends Application { 

private static Stage stage; 

@Override 
public void start(Stage stage) throws IOException { 
    setPrimaryStage(stage); 
    Parent root = FXMLLoader.load(getClass().getResource("GiantsLogin.fxml")); 
    Scene scene = new Scene(root); 
    scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 
    stage.setScene(scene); 
    stage.setTitle("Giants Login"); 
    stage.show(); 
} 

public static void setPrimaryStage(Stage primaryStage) { 
    stage = primaryStage; 
} 

public static Stage getPrimaryStage() { 
    return stage; 
} 

public static void main(String[] args) { 
    launch(args); 
} 

} 

は私のメインのためのコントローラである:

import java.io.IOException; 
import java.sql.*; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.event.Event; 
import javafx.fxml.FXML; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.control.*; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.Pane; 
import javafx.stage.Stage; 

public class GiantsLoginController { 

public String dataName, serverName, password; 
public int num; 

private Connection connect = null; 
private Statement stmt = null; 

private boolean userPass, connected; 

private Connections connection; 


@FXML 
private ComboBox<String> sType; 
@FXML 
public TextField dbName; 
@FXML 
private TextField sName; 
@FXML 
private Button loginB; 
@FXML 
private PasswordField sPassword; 
@FXML 
private Pane paneL; 
@FXML 
private GridPane gPane; 
@FXML 
private ComboBox<String> uType; 


ObservableList<String> sLists = FXCollections.observableArrayList("MySQL LOCAL", 
     "MYSQL REMOTE", "SQL SERVER LOCAL", "SQL SERVER"); 
ObservableList<String> uList = FXCollections.observableArrayList("Player", 
     "Admin"); 



@FXML 
public void initialize() { 
    sType.setItems(sLists); 
    uType.setItems(uList); 
} 

@FXML 
public void loginBClick (Event event) { 
    if (isAllFieldFillup()) { 

     switch(uType.getValue().trim()) { 
      case "Admin": 
       if (connectCheck()) { 
        try { 

          admindStage(GiantsLogin.getPrimaryStage()); 

        } 
        catch (Exception e) { 

        } 
       } 
      case "Player": 
       if (connectCheck()) { 
        try { 
         playerStage(GiantsLogin.getPrimaryStage()); 

        } 
        catch (Exception e) { 

        } 
       } 
     } 
    } 
} 

public void admindStage(Stage stage) throws IOException { 
    GiantsAdminController controller = new GiantsAdminController("Hello World!"); 
    FXMLLoader loader = new FXMLLoader (getClass().getResource("GiantsAdmin.fxml")); 
    loader.setController(controller); 
    stage.hide(); 
    stage.setScene(new Scene((Pane) loader.load())); 
    stage.show(); 
} 

public void playerStage(Stage stage) throws IOException { 
    GiantsAdminController controller = new GiantsAdminController("Hello World!"); 
    FXMLLoader loader = new FXMLLoader(getClass().getResource("GiantsPlayer.fxml")); 
    loader.setController(controller); 
    stage.hide(); 
    stage.setScene(new Scene((Pane) loader.load())); 
    stage.show(); 
} 

public void closeConnection() { 

    if (connect != null) { 
     try { 
      stmt.close(); 
      connect.close(); 
     } 
     catch (SQLException e) { 

     } 
    } 
} 

public boolean connectCheck() { 
    connected = false; 

    dataName = dbName.getText(); 
    serverName = sName.getText(); 
    password = sPassword.getText(); 


    switch (sType.getValue()) { 
     case "MySQL LOCAL": 
      num = 1; 
      break; 
     case "MYSQL REMOTE": 
      num = 2; 
      break; 
     case "SQL SERVER LOCAL": 
      num = 3; 
      break; 
     case "SQL SERVER": 
      num = 4; 
      break; 
     default: 

    } 

    if (connect == null) { 
     connect = Connections.getconnect(num, dataName, serverName, password); 
    } 

    if (connect == null) { 
     System.out.println("Still no connection"); 
    } 

    if (stmt == null) { 
     try { 
      stmt = connect.createStatement(); 
      connected = true; 
     } catch (SQLException e) { 
      Alert notify = new Alert(Alert.AlertType.INFORMATION); 
      notify.setTitle("Blank filed"); 
      notify.setHeaderText(null); 
      notify.setContentText("Incorrect login."); 
      notify.showAndWait(); 

      connected = false; 
     } 


    } 
    return connected; 
} 

private boolean isAllFieldFillup() { 
    boolean allInfo; 
    if (sType.getValue().equals("server type") && dbName.getText().isEmpty() 
      && sName.getText().isEmpty() && sPassword.getText().isEmpty()) { 
     Alert notify = new Alert(Alert.AlertType.INFORMATION); 
     notify.setTitle("Blank filed"); 
     notify.setHeaderText(null); 
     notify.setContentText("You are missing some information."); 
     notify.showAndWait(); 

     allInfo = false; 
    } 
    else { 
     allInfo = true; 
    } 
    return allInfo; 
} 

} 

これは私が私の管理のための私の舞台を設定する場所、およびプレイヤーのシーンです。

public void admindStage(Stage stage) throws IOException { 
    GiantsAdminController controller = new GiantsAdminController("Hello World!"); 
    FXMLLoader loader = new FXMLLoader (getClass().getResource("GiantsAdmin.fxml")); 
    loader.setController(controller); 
    stage.hide(); 
    stage.setScene(new Scene((Pane) loader.load())); 
    stage.show(); 
} 

public void playerStage(Stage stage) throws IOException { 
    GiantsAdminController controller = new GiantsAdminController("Hello World!"); 
    FXMLLoader loader = new FXMLLoader(getClass().getResource("GiantsPlayer.fxml")); 
    loader.setController(controller); 
    stage.hide(); 
    stage.setScene(new Scene((Pane) loader.load())); 
    stage.show(); 
} 

私はGiantsLoginControllerにこれら二つのステージを呼び出しています場所です。

public void loginBClick (Event event) { 
    if (isAllFieldFillup()) { 

     switch(uType.getValue().trim()) { 
      case "Admin": 
       if (connectCheck()) { 
        try { 

          admindStage(GiantsLogin.getPrimaryStage()); 

        } 
        catch (Exception e) { 

        } 
       } 
      case "Player": 
       if (connectCheck()) { 
        try { 
         playerStage(GiantsLogin.getPrimaryStage()); 

        } 
        catch (Exception e) { 

        } 
       } 
     } 
    } 
} 

これは、次の

import java.io.IOException; 
import java.net.URL; 
import java.sql.Statement; 
import java.util.ResourceBundle; 
import javafx.collections.*; 
import javafx.event.Event; 
import javafx.fxml.*; 
import javafx.scene.*; 
import javafx.scene.control.*; 
import javafx.stage.Stage; 

public class GiantsAdminController implements Initializable { 
@FXML 
private Button connect = null; 
private boolean connected; 

private Statement stmt; 

@FXML 
private TextField aRank; 
@FXML 
private TextField aName; 
@FXML 
private TextField aPosition; 
@FXML 
private TextField aSchool; 
@FXML 
private TextField aAge; 
@FXML 
private TextField aWar; 
@FXML 
private Button clearB; 
@FXML 
private Button addB; 
@FXML 
private TableColumn<?, ?> rank; 
@FXML 
private TableColumn<?, ?> name; 
@FXML 
private TableColumn<?, ?> position; 
@FXML 
private TableColumn<?, ?> school; 
@FXML 
private TableColumn<?, ?> age; 
@FXML 
private TableColumn<?, ?> war; 
@FXML 
private TextField qSearch; 
@FXML 
private Button search; 
@FXML 
private Button singout; 
@FXML 
private Button delete; 
@FXML 
private ComboBox<String> serverType; 
@FXML 
private TextField dbName; 
@FXML 
private TextField serverName; 
@FXML 
private TextField sPassword; 

public GiantsAdminController(String message) { 
    System.out.println("You said: " + message); 
} 

public GiantsAdminController() { 
} 

ObservableList<String> sLists = FXCollections.observableArrayList("MySQL LOCAL", 
     "MYSQL REMOTE", "SQL SERVER LOCAL", "SQL SERVER"); 
@FXML 
public void initialize() { 
    serverType.setItems(sLists); 
} 

@FXML 
public void clearBClick (Event event) { 
    aRank.clear(); 
    aName.clear(); 
    aPosition.clear(); 
    aSchool.clear(); 
    aAge.clear(); 
    aWar.clear(); 
} 


@FXML 
public void SingOutClick(Event event) throws IOException { 


    Parent giantsLogin = FXMLLoader.load(getClass().getResource("/giants/GiantsLogin.fxml")); 

    Scene gLScene = new Scene(giantsLogin); 
    gLScene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 
    stage.setScene(gLScene); 
    stage.show(); 
} 

@Override 
public void initialize(URL location, ResourceBundle resources) {//To change body of generated methods, choose Tools | Templates. 
} 
+0

をデバッガを使用する方法を学習してください。あなたの完全なコード/セットアップが利用可能でなければ、あなたを助けるのはかなり難しいです。一方で、コードをステップ実行するだけで問題を特定することができますが、これには数分かかることはありません。空のcatchブロックを使用することは、たとえ例外が発生してもコードが正常に動作しない限り、決して良い考えではありません。ほとんどの場合、情報をどこかに記録することは良い考えです。特にあなたの場合は、エラーは貴重な情報を提供する可能性があります.BTW:あなたは 'Admin'が選択されたときにプレイヤーと管理シーンを使おうとしていますか? – fabian

答えて

0

はただの命題である私の管理シーンのためのコントローラであります! admindStage()方法で、以下のような変形

public void admindStage(Stage stage) throws IOException { 
    GiantsAdminController controller = new GiantsAdminController("Hello World!"); 
    FXMLLoader loader = new FXMLLoader (getClass().getResource("GiantsAdmin.fxml")); 
    loader.setController(controller); 
    //stage.hide(); 
    stage.setScene(new Scene((Pane) loader.load())); 
    //stage.show(); 
} 

、または複数のステージを使用して行います。

public void admindStage() throws IOException { 
    GiantsAdminController controller = new GiantsAdminController("Hello World!"); 
    FXMLLoader loader = new FXMLLoader (getClass().getResource("GiantsAdmin.fxml")); 
    loader.setController(controller); 
    Stage stage = new Stage(); 
    stage.setScene(new Scene((Pane) loader.load())); 
    stage.show(); 
} 
関連する問題