2017-03-21 10 views
0

私は「合計」idのタブがあり、スイッチとリスナーにそれを得る:javafxでタブが選択されているときに何らかのアクションを実行するには?

switch ((event.getSource().toString().substring(event.getSource().toString().indexOf("=")+1,event.getSource().toString().indexOf(",")))) { 
     case "signin": 
      changeScene(signin, "atmOperation"); 
      User user = new User(); 
      user.check(); 
      break; 

     case "signout": 
      changeScene(signout, "login"); 
      break; 
     case "signup": 
      changeScene(signup, "signup"); 
      break; 
     case "back": 
      changeScene(back, "atmOperation"); 
      break; 
     case "exit": 
      stage = (Stage) exit.getScene().getWindow(); 
      stage.close(); 
      break; 
     case "total": 
      System.out.print(total.isSelected()); 
      break; 

をそして、これは私のレイアウトFXMLファイルです:私は、もしプログラムの開発を扱いたい

<?import javafx.scene.control.Tab?> 
<?import javafx.scene.control.TabPane?> 
<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.layout.Pane?> 

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="443.0" prefWidth="610.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> 
    <children> 
     <TabPane fx:id="tabPane" layoutY="37.0" nodeOrientation="RIGHT_TO_LEFT" onContextMenuRequested="#event" prefHeight="400.0" prefWidth="610.0" tabClosingPolicy="UNAVAILABLE"> 
     <tabs> 
      <Tab fx:id="total" closable="false" text="x" onSelectionChanged="#event"> 
      <content> 
       <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> 
      </content> 
      </Tab> 
      <Tab text="x"> 
      <content> 
       <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> 
      </content> 
      </Tab> 
      <Tab text="y"> 
       <content> 
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> 
       </content> 
      </Tab> 
      <Tab text="y"> 
       <content> 
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> 
       </content> 
      </Tab> 
     </tabs> 
     </TabPane> 
    </children> 
</Pane> 

ユーザーがクリック総IDのタブで、私は私を助けることができないonSelectionChangedを使用! ユーザーが総IDタブをクリックするとどうすれば処理できますか?

+0

あなたはタブFXとするとき、いくつかのアクションを実行したいですか:ID 'total'が選択されていますか?または、タブをデフォルトで選択する必要がありますか? – ItachiUchiha

+0

ありがとう、私の友人、fx:id合計のタブが選択されているときに何らかのアクションを実行したい –

答えて

0

これは、selectedItemPropertyまたはselectedIndexPropertyで行うことができます。以下はselectedItemPropertyを使用したソリューションです。スイッチケースは不要です。あなたはtotalTabが選択されているかどうかだけで以下のように、注釈付きのタブの名前はFXMLでfx:idセットと一致しなければならないことに注意してください、確認してください、あなたのコントローラーevent方法では、そのためのonSelectionChangedを使用することができます

// starts here 
tabPane.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Tab>() { 
    @Override 
    public void changed(ObservableValue<? extends Tab> observable, Tab oldTab, Tab newTab) { 
     if(newTab.equals (total)) {    
      System.out.print(total.isSelected()); 
     } 
    } 
}); 
0

ファイル、メソッド名(この場合はevent)は、fxmlファイル内の名前onSelectionChanged="#event"と一致する必要があります。

public class Controller { 

     @FXML 
     private Tab total; 

     @FXML 
     void event(Event ev) { 
      if (total.isSelected()) { 
       System.out.println("Tab is Selected"); 
       //Do stuff here 
      } 
     } 
    } 

またはプログラム純粋:

total.setOnSelectionChanged(event -> { 
     if (total.isSelected()) { 
      System.out.println("Tab is Selected"); 
      //Do stuff here 
     } 
    }); 
関連する問題