JavaFX TabPane: How to listen to selection changes

前端 未结 4 1190
温柔的废话
温柔的废话 2021-01-03 23:47

I want to do some actions when user goes from one tab to another, since i made my form design with Scene Builder I cannot use code mentioned here (He used TabPaneBuild

4条回答
  •  半阙折子戏
    2021-01-04 00:34

    The right way to use change listener is this:

    chatTabs.getSelectionModel().selectedItemProperty().addListener(
        new ChangeListener() {
            @Override
            public void changed(ObservableValue ov, Tab t, Tab t1) {
                System.out.println("Tab Selection changed");
            }
        }
    );
    

    Why code in question didn't work? I guess its because your change listener listens to changes in "selectionModel" instead of "selectedItem"


    Finding out when a tab has been added or removed is a little trickier:

    tabs.addListener( (Change change) -> {
      while( change.next() ) {
        if( change.wasAdded() ) {
          for( final Tab tab : change.getAddedSubList() ) {
            System.out.println( "Tab Added: " + tab );
          }
        } else if( change.wasRemoved() ) {
          // ...
        }
      }
    } );
    

提交回复
热议问题