javafx怎么隐藏一个pane_JAVAFX开发中TabPane 的使用方法

本文介绍了如何在JavaFX中使用TabPane,包括创建、设置Tab内容、切换Tab位置和模式,以及添加和删除Tab的操作。通过示例代码详细展示了TabPane的各种用法。
摘要由CSDN通过智能技术生成

JAVAFX TabPane 的使用方法:

实例1

public class tabPaneTest extends Application {

@Override

public void start(Stage primaryStage) {

primaryStage.setTitle("Tabs");

Group root = new Group();

Scene scene = new Scene(root, 400, 250, Color.WHITE);

TabPane tabPane = new TabPane();

BorderPane borderPane = new BorderPane();

Tab tab = new Tab();

tab.setText("Tab" + i);

HBox hbox = new HBox();

hbox.getChildren().add("tabHome"));

hbox.setAlignment(Pos.CENTER);

tab.setContent(hbox);

tab.setClosable(false);

tabPane.getTabs().add(tab);

tabPane.setSide(Side.LEFT);

tabPane.setSide(Side.RIGHT);

//tabPane.setSide(Side.BOTTOM);

// bind to take available space

borderPane.prefHeightProperty().bind(scene.heightProperty());

borderPane.prefWidthProperty().bind(scene.widthProperty());

borderPane.setCenter(tabPane);

root.getChildren().add(borderPane);

primaryStage.setScene(scene);

primaryStage.show();

}

}

实例2

public class TabPaneApp extends Application {

private TabPane tabPane;

private Tab tab1;

private Tab tab2;

private Tab tab3;

private Tab internalTab;

public Parent createContent() {

//Each tab illustrates different capabilities

tabPane = new TabPane();

tabPane.setPrefSize(400, 360);

tabPane.setMinSize(TabPane.USE_PREF_SIZE, TabPane.USE_PREF_SIZE);

tabPane.setMaxSize(TabPane.USE_PREF_SIZE, TabPane.USE_PREF_SIZE);

tab1 = new Tab();

tab2 = new Tab();

tab3 = new Tab();

internalTab = new Tab();

tabPane.setRotateGraphic(false);

tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.SELECTED_TAB);

tabPane.setSide(Side.TOP);

final VBox vbox = new VBox();

vbox.setSpacing(10);

vbox.setTranslateX(10);

vbox.setTranslateY(10);

// Initial tab with buttons for experimenting

tab1.setText("Tab 1");

tab1.setTooltip(new Tooltip("Tab 1 Tooltip"));

final InputStream png = getClass().getResourceAsStream("tab_16.png");

final Image image = new Image(png);

tab1.setGraphic(new ImageView(image));

setUpControlButtons(vbox);

tab1.setContent(vbox);

tabPane.getTabs().add(tab1);

// Tab2 has longer label and toggles tab closing

tab2.setText("Longer Tab");

final VBox vboxLongTab = new VBox();

vboxLongTab.setSpacing(10);

vboxLongTab.setTranslateX(10);

vboxLongTab.setTranslateY(10);

Label explainRadios = new Label("Closing policy for tabs:");

vboxLongTab.getChildren().add(explainRadios);

ToggleGroup closingPolicy = new ToggleGroup();

for (TabClosingPolicy policy : TabClosingPolicy.values()) {

final RadioButton radioButton = new RadioButton(policy.name());

radioButton.setMnemonicParsing(false);

radioButton.setToggleGroup(closingPolicy);

radioButton.setOnAction((ActionEvent event) -> {

final TabClosingPolicy radioPolicy =

TabClosingPolicy.valueOf(radioButton.getText());

tabPane.setTabClosingPolicy(radioPolicy);

});

if (policy.name().equals(TabClosingPolicy.SELECTED_TAB.name())) {

radioButton.setSelected(true);

}

vboxLongTab.getChildren().add(radioButton);

}

tab2.setContent(vboxLongTab);

tabPane.getTabs().add(tab2);

// Tab 3 has a checkbox for showing/hiding tab labels

tab3.setText("Tab 3");

final VBox vboxTab3 = new VBox();

vboxTab3.setSpacing(10);

vboxTab3.setTranslateX(10);

vboxTab3.setTranslateY(10);

final CheckBox cb = new CheckBox("Show labels on original tabs");

cb.setSelected(true);

cb.setOnAction((ActionEvent event) -> {

if (cb.isSelected()) {

tab1.setText("Tab 1");

tab2.setText("Longer Tab");

tab3.setText("Tab 3");

internalTab.setText("Internal Tabs");

} else {

tab1.setText("");

tab2.setText("");

tab3.setText("");

internalTab.setText("");

}

});

vboxTab3.getChildren().add(cb);

tab3.setContent(vboxTab3);

tabPane.getTabs().add(tab3);

// Internal Tabs

internalTab.setText("Internal Tabs");

setupInternalTab();

tabPane.getTabs().add(internalTab);

return tabPane;

}

private void toggleTabPosition(TabPane tabPane) {

Side pos = tabPane.getSide();

if (pos == Side.TOP) {

tabPane.setSide(Side.RIGHT);

} else if (pos == Side.RIGHT) {

tabPane.setSide(Side.BOTTOM);

} else if (pos == Side.BOTTOM) {

tabPane.setSide(Side.LEFT);

} else {

tabPane.setSide(Side.TOP);

}

}

private void toggleTabMode(TabPane tabPane) {

if (!tabPane.getStyleClass().contains(TabPane.STYLE_CLASS_FLOATING)) {

tabPane.getStyleClass().add(TabPane.STYLE_CLASS_FLOATING);

} else {

tabPane.getStyleClass().remove(TabPane.STYLE_CLASS_FLOATING);

}

}

private void setupInternalTab() {

StackPane internalTabContent = new StackPane();

final TabPane internalTabPane = new TabPane();

internalTabPane.getStyleClass().add(TabPane.STYLE_CLASS_FLOATING);

internalTabPane.setSide(Side.LEFT);

internalTabPane.setPrefSize(Region.USE_COMPUTED_SIZE,

Region.USE_COMPUTED_SIZE);

final Tab innerTab = new Tab();

innerTab.setText("Tab 1");

final VBox innerVbox = new VBox();

innerVbox.setSpacing(10);

innerVbox.setTranslateX(10);

innerVbox.setTranslateY(10);

Button innerTabPosButton = new Button("Toggle Tab Position");

innerTabPosButton.setOnAction((ActionEvent e) -> {

toggleTabPosition(internalTabPane);

});

innerVbox.getChildren().add(innerTabPosButton);

{

Button innerTabModeButton = new Button("Toggle Tab Mode");

innerTabModeButton.setOnAction((ActionEvent e) -> {

toggleTabMode(internalTabPane);

});

innerVbox.getChildren().add(innerTabModeButton);

}

innerTab.setContent(innerVbox);

internalTabPane.getTabs().add(innerTab);

for (int i = 1; i < 5; i++) {

Tab tab = new Tab();

tab.setText("Tab " + i);

tab.setContent(new Region());

internalTabPane.getTabs().add(tab);

}

internalTabContent.getChildren().add(internalTabPane);

internalTab.setContent(internalTabContent);

}

private void setUpControlButtons(VBox vbox) {

// Toggle style class floating

final Button tabModeButton = new Button("Toggle Tab Mode");

tabModeButton.setOnAction((ActionEvent e) -> {

toggleTabMode(tabPane);

});

vbox.getChildren().add(tabModeButton);

// Tab position

final Button tabPositionButton = new Button("Toggle Tab Position");

tabPositionButton.setOnAction((ActionEvent e) -> {

toggleTabPosition(tabPane);

});

// Add tab and switch to it

final Button newTabButton = new Button("Switch to New Tab");

newTabButton.setOnAction((ActionEvent e) -> {

Tab t = new Tab("Testing");

t.setContent(new Button("Howdy"));

tabPane.getTabs().add(t);

tabPane.getSelectionModel().select(t);

});

vbox.getChildren().add(newTabButton);

// Add tab

final Button addTabButton = new Button("Add Tab");

addTabButton.setOnAction((ActionEvent e) -> {

Tab t = new Tab("New Tab");

t.setContent(new Region());

tabPane.getTabs().add(t);

});

vbox.getChildren().add(addTabButton);

}

@Override public void start(Stage primaryStage) throws Exception {

primaryStage.setScene(new Scene(createContent()));

primaryStage.show();

}

/**

* Java main for when running without JavaFX launcher

* @param args command line arguments

*/

public static void main(String[] args) {

launch(args);

}

}

注意:本文归作者所有,未经作者允许,不得转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值