デフォルトのボタンは1つだけです。現在選択されているタブのボタンをデフォルトのボタンにします。それぞれのタブの選択されたプロパティにリスナーを追加して、対応するボタンをデフォルトのボタンにするか、またはバインディングを使用して同じものを実現してください:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class MultipleDefaultButtons extends Application {
@Override
public void start(Stage primaryStage) {
TabPane tabPane = new TabPane();
tabPane.getTabs().addAll(createTab("Tab 1"), createTab("Tab 2"));
primaryStage.setScene(new Scene(tabPane, 400, 400));
primaryStage.show();
}
private Tab createTab(String text) {
Tab tab = new Tab(text);
Label label = new Label("This is "+text);
Button ok = new Button("OK");
ok.setOnAction(e -> System.out.println("OK pressed in "+text));
VBox content = new VBox(5, label, ok);
tab.setContent(content);
ok.defaultButtonProperty().bind(tab.selectedProperty());
return tab ;
}
public static void main(String[] args) {
launch(args);
}
}
プロパティを直接バインドする方が簡単でしょうか。 .defaultButtonProperty()。bind(tab.selectedProperty()) '? – VGR
@VGRああ、ええ、それはよかった...更新されました。ありがとう。 –