在我的GUI中,我嘗試顯示一個TabPane
與其中的其他元素。如何初始化一個TabPane(JavaFX)
當調用特定場景的初始化方法時,我可以將所需的數據添加到第一個選項卡。
如何訪問第二個,有添加數據?`
是否有當u單個標籤之間切換,或者被調用是否有可能將其從初始化方法的方法?
//all the fields
@FXML
private void initialize() {
smsHandynumberColumn.setCellValueFactory(cellData -> cellData.getValue().numberProperty());
smsHandyproviderColumn.setCellValueFactory(cellData -> cellData.getValue().providerProperty());
displayHandyDetails(null);
smsHandyList.getSelectionModel().selectedItemProperty()
.addListener((observable, oldValue, newValue) -> displayHandyDetails(newValue));
// providernameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
// provideramountColumn.setCellValueFactory(cellData -> cellData.getValue().sizeProperty());
}
@FXML
private void displayHandyDetails(SmsHandy handy) {
if (handy != null) {
handyNumberLabel.setText(handy.getNumber());
providerLabel.setText(handy.getProvider().getName());
registerLabel.setText(handy.getDate().toString());
receivedLabel.setText(Integer.toString(handy.getReceivedList().size()));
sentLabel.setText(Integer.toString(handy.getSentList().size()));
if (handy instanceof PrepaidSmsHandy) {
balanceLabel.setText(Integer.toString(handy.getProvider().getCreditForSmsHandy(handy.getNumber()))
+ " Cent on account");
typeLabel.setText("Prepaid");
} else {
balanceLabel.setText(
Integer.toString(((TariffPlanSmsHandy) handy).getRemainingFreeSms()) + " free SMS left");
typeLabel.setText("Tariff-Plan");
}
} else {
handyNumberLabel.setText(" ");
providerLabel.setText(" ");
registerLabel.setText(" ");
typeLabel.setText(" ");
balanceLabel.setText(" ");
receivedLabel.setText(" ");
sentLabel.setText(" ");
}
}
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
smsHandyList.setItems(mainApp.getHandyList());
}
}
所以,這是控制器類。就這樣,我可以工作obv。與第一個選項卡窗格(默認情況下顯示時,你看它)。
FXML文件:http://pastebin.com/MQ0C8EWD
第一:是的,這是問題:)事情是:我不能只是從初始化方法訪問第二個窗格上的表,我在那裏得到一個空點異常。我會複製它。 – Master1114
是的,那麼請包括FXML注射部分也 – DVarga
或更好地張貼您的整個控制器。 – DVarga