JAVAFX界面跳转和加载不同的界面 |
您所在的位置:网站首页 › javafx窗口打不开 › JAVAFX界面跳转和加载不同的界面 |
主要分为两种情况 从一个界面跳转到另外一个新的界面在原有界面上加载其他页面。类似iframe先从第一个情况的实现说起。 页面跳转 1. 创建一个登录界面登录进去之后显示该界面 这个类是应用的启动类。页面跳转主要使用了自定义的replaceSceneContent方法,该方法的输入参数为界面的fxml的路径。 应用启动后,执行start方法初始加载登录界面。点击登录按钮,调用LoginController 的loginButtonClick方法,进行登录验证。验证通过调用gotoMain方法,页面跳转到主界面。 同一个布局中加载不同的界面这里主要是实现了主界面中的TreeView。主界面的控制组件实现如下: package app.view.main; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import app.alterview.ViewAlter; import app.resource.StaticResourcesConfig; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.control.ScrollPane; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeView; import javafx.scene.layout.AnchorPane; public class MainController implements Initializable { private static final Logger logger = Logger.getLogger(MainController.class.getName()); private ViewAlter viewAlter; @FXML private TreeView main_treeview; @FXML private ScrollPane main_scroll_pane; @FXML private AnchorPane main_pane_under_scroll; public void setApp(ViewAlter viewAlter) { this.viewAlter = viewAlter; } @Override public void initialize(URL location, ResourceBundle resources) { setTreeView(); } /** * 设置TreeView */ @SuppressWarnings("unchecked") public void setTreeView() { TreeItem root = new TreeItem(StaticResourcesConfig.MAIN_TREE_HEADER); root.setExpanded(true); root.getChildren().addAll(new TreeItem(StaticResourcesConfig.MAIN_TREE_HEADER_ITEM1), new TreeItem(StaticResourcesConfig.MAIN_TREE_HEADER_ITEM2), new TreeItem(StaticResourcesConfig.MAIN_TREE_HEADER_ITEM3), new TreeItem(StaticResourcesConfig.MAIN_TREE_HEADER_ITEM4), new TreeItem(StaticResourcesConfig.MAIN_TREE_HEADER_ITEM5)); main_treeview.setRoot(root); } /** * TreeView 点击事件 * @throws IOException */ public void mainTreeViewClick() throws IOException { logger.log(Level.INFO, "点击TreeView"); // 获取鼠标当前点击的Item TreeItem selectedItem = main_treeview.getSelectionModel().getSelectedItem(); logger.log(Level.INFO, selectedItem.getValue()); String pagePath = ""; switch (selectedItem.getValue()) { case StaticResourcesConfig.MAIN_TREE_HEADER: pagePath = StaticResourcesConfig.DEFAULT_VIEW_PATH; break; case StaticResourcesConfig.MAIN_TREE_HEADER_ITEM1: pagePath = StaticResourcesConfig.NOTE_VIEW_PATH; break; case StaticResourcesConfig.MAIN_TREE_HEADER_ITEM2: pagePath = StaticResourcesConfig.CLIP_VIEW_PATH; break; case StaticResourcesConfig.MAIN_TREE_HEADER_ITEM3: pagePath = StaticResourcesConfig.USER_VIEW_PATH; break; case StaticResourcesConfig.MAIN_TREE_HEADER_ITEM4: pagePath = StaticResourcesConfig.DATA_VIEW_PATH; break; case StaticResourcesConfig.MAIN_TREE_HEADER_ITEM5: pagePath = StaticResourcesConfig.LANGUAGE_VIEW_PATH; break; } skipView(pagePath); } /** * 改变右侧scroll的界面 * @param pagePath * @throws IOException */ private void skipView(String pagePath) throws IOException { logger.info("显示剪切板界面"); ObservableList scrolChildren = main_pane_under_scroll.getChildren(); scrolChildren.clear(); scrolChildren.add(FXMLLoader.load(getClass().getResource(pagePath))); } }main_treeview.getSelectionModel().getSelectedItem();获取鼠标点击的是哪个项目。根据点击加载不同的界面。加载界面时调用的方法为skipView,该方法首先清空之前布局中存在的元素,并通过FXMLLoader重新加载我们需要的页面。 效果如下: StaticResourcesConfig定义如下 package app.resource; public final class StaticResourcesConfig { public final static int STAGE_WIDTH = 800; public final static int STAGE_HEIGHT = 600; public final static String LOGIN_VIEW_PATH = "/app/view/login/LoginView.fxml"; public final static String MAIN_VIEW_PATH = "/app/view/main/MainView.fxml"; public final static String CLIP_VIEW_PATH = "/app/view/panel/clip/ClipView.fxml"; public final static String NOTE_VIEW_PATH = "/app/view/panel/note/NoteView.fxml"; public static final String DEFAULT_VIEW_PATH = "/app/view/panel/note/NoteView.fxml"; public static final String LANGUAGE_VIEW_PATH = "/app/view/panel/note/NoteView.fxml"; public static final String DATA_VIEW_PATH = "/app/view/panel/datanaly/DataView.fxml"; public static final String USER_VIEW_PATH = "/app/view/panel/usermanage/UserView.fxml"; // WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW // WWW 界面字段显示 WWW // WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW public final static String MAIN_TREE_HEADER = "首页"; public final static String MAIN_TREE_HEADER_ITEM1 = "记事本"; public final static String MAIN_TREE_HEADER_ITEM2 = "剪贴板"; public final static String MAIN_TREE_HEADER_ITEM3 = "用户管理"; public final static String MAIN_TREE_HEADER_ITEM4 = "数据分析"; public final static String MAIN_TREE_HEADER_ITEM5 = "语言"; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |