首页 文章

Javafx使用堆栈窗格更改窗格[复制]

提问于
浏览
0

这个问题在这里已有答案:

当按钮位于主场景中而不是堆栈窗格中时,我成功地使用 .setVisible() 更改堆栈窗格中的窗格 .

但是当我想通过单击其中一个窗格中的按钮来更改我的窗格时,我将得到NullPointer错误......

我尝试在每个窗格控制器中创建StackPane控制器,并使用方法 .isPressed() 来控制窗格可见,那么我该如何解决这个问题呢?

chatController.java

public class chatController{
    @FXML Pane pane_chat_list,pane_chat_room;

    public void initialize() {
        pane_chat_list.setVisible(false);
        pane_chat_room.setVisible(true);
    }
    public void isPressed(int a) {
        if(a == 0) {
             pane_chat_list.setVisible(true);
             pane_chat_room.setVisible(false);
         }else {
             pane_chat_list.setVisible(false);
             pane_chat_room.setVisible(true);
         }
    }
}

chat_list.java

public class chat_list{
    @FXML Button chat_list_button;
    chatController controll = new chatController();
    public void initialize() {
        chat_list_button.setOnAction(e -> back());
    }
    public void back() {
        controll.isPressed(1);
    }
}

chat_room.java

public class chat_room{
    @FXML Button chat_room_back;
    chatController controll = new chatController();
    public void initialize() {
        chat_room_back.setOnAction(e -> back());
    }
    public void back() {
        controll.isPressed(0);
    }
}

1 回答

  • 0

    我的第一个建议是阅读一些优秀的Java书籍或教程,并且有很多很好的Java资源,同时也要确保学习约定 .

    你的问题是你在 chat_roomchat_list 中都创建了 chatController 的新实例,并且它们应该在其他实例中共享相同的实例以使其工作,你甚至可能甚至不会在 chatController 内初始化 pane_chat_listpane_chat_room ,这会导致 NullPointerException .

    你的方法使得这很难,即使解决方案更简单,所有你需要的是拥有一个包含两个视图的父类,视图彼此不知道,它们只是通知父类点击 backButton ,和父管理显示的内容和隐藏的内容 .

相关问题