Javafx如何隐藏/取消隐藏选项卡窗格上的选项卡
我有一个tabpane,根据正在发生的事情,我想让某些选项卡不可见,而其他选项卡可见。场景和选项卡都在FXML中定义 我知道我可以使用:Javafx如何隐藏/取消隐藏选项卡窗格上的选项卡,javafx,Javafx,我有一个tabpane,根据正在发生的事情,我想让某些选项卡不可见,而其他选项卡可见。场景和选项卡都在FXML中定义 我知道我可以使用: tabPane.getTabs().add(0, tab1); 及 但是我的所有选项卡,包括tab1,都是在FXML中定义的。如果我可以获取并保存所有已定义的选项卡并保存它们,以便以后可以重新添加它们,那就可以了。您上面的解决方案很好。只需确保在FXML中为要操作的每个选项卡提供一个ID <Tab fx:id="myTab1">....<
tabPane.getTabs().add(0, tab1);
及
但是我的所有选项卡,包括tab1,都是在FXML中定义的。如果我可以获取并保存所有已定义的选项卡并保存它们,以便以后可以重新添加它们,那就可以了。您上面的解决方案很好。只需确保在FXML中为要操作的每个选项卡提供一个ID
<Tab fx:id="myTab1">....</Tab>
控制器:
package application;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collectors;
import javafx.fxml.FXML;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
public class TestController {
@FXML
private TabPane tabPane;
@FXML
private Tab tab1, tab2, tab3, tab4;
Collection<Tab> tabs = new ArrayList<>();
Collection<String> openTabIds = new ArrayList<>();
@FXML
private void initialize() {
tabs.add(tab1);
tabs.add(tab2);
tabs.add(tab3);
tabs.add(tab4);
}
@FXML
void openTabs() {
openTabIds.stream().forEach(string -> {
tabs.stream()
.filter(tab -> tab.getId().equals(string)).findFirst()
.ifPresent(tab -> tabPane.getTabs().add(tab));
});
}
@FXML
void saveTabs() {
openTabIds = tabPane.getTabs().stream().map(tab -> tab.getId()).collect(Collectors.toList());
}
}
包应用;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.stream.collector;
导入javafx.fxml.fxml;
导入javafx.scene.control.Tab;
导入javafx.scene.control.TabPane;
公共类测试控制器{
@FXML
私有选项卡窗格选项卡窗格;
@FXML
专用选项卡tab1、tab2、tab3、tab4;
集合选项卡=新建ArrayList();
集合openTabIds=newarraylist();
@FXML
私有void初始化(){
tabs.add(tab1);
tabs.add(tab2);
tabs.add(tab3);
tabs.add(tab4);
}
@FXML
void openTabs(){
openTabIds.stream().forEach(字符串->{
tabs.stream()
.filter(tab->tab.getId().equals(string)).findFirst()
.ifPresent(tab->tabPane.getTabs().add(tab));
});
}
@FXML
void saveTabs(){
openTabIds=tabPane.getTabs().stream().map(tab->tab.getId()).collect(Collectors.toList());
}
}
您上面的解决方案很好。只需确保在FXML中为要操作的每个选项卡提供一个ID
<Tab fx:id="myTab1">....</Tab>
控制器:
package application;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collectors;
import javafx.fxml.FXML;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
public class TestController {
@FXML
private TabPane tabPane;
@FXML
private Tab tab1, tab2, tab3, tab4;
Collection<Tab> tabs = new ArrayList<>();
Collection<String> openTabIds = new ArrayList<>();
@FXML
private void initialize() {
tabs.add(tab1);
tabs.add(tab2);
tabs.add(tab3);
tabs.add(tab4);
}
@FXML
void openTabs() {
openTabIds.stream().forEach(string -> {
tabs.stream()
.filter(tab -> tab.getId().equals(string)).findFirst()
.ifPresent(tab -> tabPane.getTabs().add(tab));
});
}
@FXML
void saveTabs() {
openTabIds = tabPane.getTabs().stream().map(tab -> tab.getId()).collect(Collectors.toList());
}
}
包应用;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.stream.collector;
导入javafx.fxml.fxml;
导入javafx.scene.control.Tab;
导入javafx.scene.control.TabPane;
公共类测试控制器{
@FXML
私有选项卡窗格选项卡窗格;
@FXML
专用选项卡tab1、tab2、tab3、tab4;
集合选项卡=新建ArrayList();
集合openTabIds=newarraylist();
@FXML
私有void初始化(){
tabs.add(tab1);
tabs.add(tab2);
tabs.add(tab3);
tabs.add(tab4);
}
@FXML
void openTabs(){
openTabIds.stream().forEach(字符串->{
tabs.stream()
.filter(tab->tab.getId().equals(string)).findFirst()
.ifPresent(tab->tabPane.getTabs().add(tab));
});
}
@FXML
void saveTabs(){
openTabIds=tabPane.getTabs().stream().map(tab->tab.getId()).collect(Collectors.toList());
}
}
您的意思是隐藏选项卡的内容?您的FXML
有控制器?您好。谢谢你看我的问题。是的,我的应用程序有一个控制器。我想隐藏整个选项卡(选项卡窗格上的选项卡以及所有内容),然后在不同的条件下再次显示。你是说隐藏选项卡的内容?您的FXML
有控制器?您好。谢谢你看我的问题。是的,我的应用程序有一个控制器。我想隐藏整个选项卡(选项卡窗格上的选项卡以及所有内容),然后在不同的条件下再次显示。是的。就这么简单。漂亮的示例/代码。谢谢,是的。就这么简单。漂亮的示例/代码。非常感谢。
package application;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collectors;
import javafx.fxml.FXML;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
public class TestController {
@FXML
private TabPane tabPane;
@FXML
private Tab tab1, tab2, tab3, tab4;
Collection<Tab> tabs = new ArrayList<>();
Collection<String> openTabIds = new ArrayList<>();
@FXML
private void initialize() {
tabs.add(tab1);
tabs.add(tab2);
tabs.add(tab3);
tabs.add(tab4);
}
@FXML
void openTabs() {
openTabIds.stream().forEach(string -> {
tabs.stream()
.filter(tab -> tab.getId().equals(string)).findFirst()
.ifPresent(tab -> tabPane.getTabs().add(tab));
});
}
@FXML
void saveTabs() {
openTabIds = tabPane.getTabs().stream().map(tab -> tab.getId()).collect(Collectors.toList());
}
}