- rootlayout.fxml
- studentview.fxml(主窗口)
- genderpopup.fxml(带有TableView显示记录的弹出窗口)
Main.java
package sample; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import java.io.IOException; public class Main extends Application { private Stage primaryStage; private BorderPane rootLayout; @Override public void start(Stage primaryStage) { this.primaryStage = primaryStage; this.primaryStage.setTitle("Sample JavaFX App"); initRootLayout(); // Initialize RootLayout showStudentView(); } //Initializes the root layout. public void initRootLayout() { try { FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("view/RootLayout.fxml")); rootLayout = (BorderPane) loader.load(); Scene scene = new Scene(rootLayout); primaryStage.setScene(scene); primaryStage.show(); //Display the primary stage } catch (IOException e) { e.printStackTrace(); } } //Shows the Patient inside the root layout. public void showStudentView() { try { FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("view/StudentView.fxml")); AnchorPane PatientView = (AnchorPane) loader.load(); rootLayout.setCenter(PatientView); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
StudentController.java
package sample.controller; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class StudentController { @FXML private TextField studentIdText; @FXML private TextField lastNameText; @FXML private TextField firstNameText; @FXML private TextField sexText; @FXML private Button popupButton; @FXML private void initialize () { // I have additional listeners here doing different things that I have excluded which do pretty much similar things as shown below sexText.focusedProperty().addListener((arg0, oldPropertyValue, newPropertyValue) -> { if (!newPropertyValue) { try { searchSexDescription(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }); } // Function to Search Sex Description @FXML private void searchSexDescription() throws ClassNotFoundException, SQLException { try { if (!sexText.getText().isEmpty()) { // Get Gender Description Patient sex = SexDAO.searchSex(sexText.getText()); populateAndShowSexDescription(sex); } } catch (SQLException e) { System.out.println("Exception raised in searchSexDescription"); e.printStackTrace(); throw e; } } @FXML public void showGenderPopup() throws IOException { try { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("view/GenderPopup.fxml")); Parent root = (Parent) fxmlLoader.load(); Scene scene = new Scene(root); Stage stage = new Stage(); stage.setScene(scene); stage.show(); } catch (IOException e) { e.printStackTrace(); } }
你的道路不正确。您试图从StudentController
类而不是Main
类获取FXML资源。正如您所提到的,您的项目结构包括:
/sample/main.java
/sample/controller/studentcontroller.java
/sample/view/genderpopup.fxml
由于您在StudentController
内调用getClass().getResource(...)
,所以没有前导/
的路径相对于StudentController
的位置。这意味着路径最终解析为:
/sample/controller/view/genderpopup.fxml
根本不存在。
如果使用StudentController.class
查询资源,则需要使用/sample/view/genderpopup.fxml
作为路径。
我想在JavaFX应用程序中创建一个弹出窗口。给我一些想法。 当我点击检查按钮时,它会打开弹出窗口。怎么做?
我在窗格上保留了一个弹出对话框,它位于其他组件的顶部。现在我想禁用访问程序的所有其他组件。怎么做?
我有一个叫IndexController的控制器。它有@GetMapping和@PostMapping方法。当用户键入要转到/索引的URL时,它将加载一个书籍列表。在该索引页面上,有一个“添加新书”按钮,可触发模式弹出窗口。当用户在表单中输入信息并单击“添加”按钮时,它应该调用@PostMapping方法。它没有调用方法。表单的模型是IndexBook。 IndexController类: 索引簿
如何通过弹出窗口显示进度条,并在流程完成后自动关闭。这是我的密码。 进度表类: 这段代码的问题是 如果我使用. show(),显示弹出窗口很流畅,但没有进度条。 如果我使用. show And等待(),显示弹出窗口需要手动退出弹出窗口才能关闭但进度条显示。 对此有什么想法/想法吗?
问题内容: 我正在尝试使用javafx在webview中打开网页。单击超链接后,此网页将打开一个新的弹出窗口。 我如何打开新的弹出窗口,当尝试在默认Web浏览器(例如chrome,IE)中打开同一网页时,它们正在打开弹出窗口。 为了创建弹出窗口,我使用以下代码。 问题答案: 您需要自己创建WebView弹出窗口,并从回调中提供WebEngine。如果需要新窗口,请使用该WebView创建一个新的舞
我有这段代码显示了一个按钮谁显示一个弹出窗口,我希望用户能够关闭弹出窗口点击它的外部时,它是打开的。