我有两个带有两个控制器类MainController和PlaylistController的fxml文件。每个类分别有一个TableView,table
和nTable
。
table
显示为TabPane
nTable
适用于使用按钮创建的新标签页。
我想要的是能够在默认表格中选择项目,并在单个操作中将它们添加到新选项卡上的新表格中(我可以使用两个按钮执行此操作,其中一个按钮在新选项卡后单击被建造)。
我猜我需要确保程序在设置项目之前等待创建新标签,但我不知道该怎么做。
这是我使用的方法:
@FXML
PlaylistController pc;
public static ObservableList<Track> newTracklist = FXCollections.observableArrayList();
public void addToNewPlaylist(){
newTracklist.clear();
newTracklist.addAll(table.getSelectionModel().getSelectedItems());
Tab nTab = new Tab();
FXMLLoader nLoader = new FXMLLoader(getClass().getResource("/fxml/fxPlaylist.fxml"));
try {
Parent nRoot = nLoader.load();
nTab.setContent(nRoot);
} catch (IOException e) {
e.printStackTrace();
}
tabPane.getTabs().add(nTab);
nTab.isClosable();
pc.nTable.setItems(newTracklist);
}
答案 0 :(得分:0)
除非您定义常量或类似内容,否则self
字段在控制器中没有位置。
在static
中定义一个方法,以便在其表格中显示PlaylistController
列表:
Track
然后在加载FXML时调用它:
public class PlaylistController {
@FXML
private TableView<Track> nTable ;
// ...
public void setTracks(List<Track> tracks) {
nTable.getItems().setAll(tracks);
}
// ...
}