이 질문을하기 전에 어디에서나 솔루션을 찾았습니다. 이미 존재하는 경우이를보고하십시오.JavaFX, 탭 사이에 매개 변수 전달
TabLayout.fxml
<JFXTabPane fx:id="tabbedPane" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefWidth="500.0" tabClosingPolicy="UNAVAILABLE" tabMinWidth="100.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.TAB.TabController" stylesheets="@tab.css">
<tabs>
<Tab id="anagrafeTab" closable="false" text="Anagrafe">
<content>
<fx:include fx:id="anagrafeL" source="/application/Anagrafe/AnagrafeLayout.fxml"/>
</content>
</Tab>
<Tab id="visiteTab" closable="false" text="Visite">
<content>
<fx:include fx:id="visiteL" source="/application/Visite/VisiteLayout.fxml"/>
</content></Tab>
<Tab id="latteTab" closable="false" text="Produzione Latte">
<content>
<fx:include fx:id="latteL" source="/application/Latte/LatteLayout.fxml"/>
</content>
</Tab>
<Tab id="partiTab" closable="false" text="Parti" >
<content>
<fx:include fx:id="partiL" source="/application/Parti/PartiLayout.fxml"/>
</content>
</Tab>
</tabs>
</JFXTabPane>
"포함"모든위한 레이아웃 :
AnagrafeLayout.fxml
실제로
PartiLayout.fxml
나는이 상황이 나는 모델과 모든 레이아웃에 대한 컨트롤러하지만 고유 발신자가보다
LatteLayout.fxml
VisiteLayout.fxml
public class Tab {
public Tab() {
inizializza();
}
private void inizializza() {
try {
Stage stage = new Stage();
stage.setTitle("Dati");
stage.getIcons().add(new Image(getClass().getResourceAsStream("insert.png")));
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("TabLayout.fxml"));
JFXTabPane root = (JFXTabPane) loader.load();
Scene scene = new Scene(root,660,430);
stage.setScene(scene);
stage.show();
//ScenicView.show(scene);
} catch(Exception e) {
e.printStackTrace();
}
}
}
각 컨트롤러에 ObservableList<Visite> data = FXCollections.observableArrayList();
을 전달해야합니다.
나는 어떻게해야하는지 잘 모르며, 꽤 긴 클래스이기 때문에 단일 컨트롤러를 사용하지 않을 것입니다.
편집 :
TABController.java
public class TabController implements Initializable {
@FXML
private TabPane tabbedPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
assert tabbedPane != null : "fx:tabbedPane=\"in\" was not injected: check your FXML file 'TabLayout.fxml'.";
tabbedPane.getSelectionModel().selectedItemProperty().addListener((ov, oldTab, newTab) -> {
if(tabbedPane.getSelectionModel().getSelectedIndex() != 0) {
tabbedPane.getScene().getWindow().setWidth(1171);
tabbedPane.getScene().getWindow().setHeight(700);
} else {
tabbedPane.getScene().getWindow().sizeToScene();
}
});
}
}
EDIT2
4 개 탭, 위의 각 자신의 모델 클래스를 언급 한 바와 같이, 있습니다. 그래서 각 탭마다 테이블이 있으므로 동적으로 채워지기 때문에 처음에는 비어있는 4 개의 다른 목록이 있습니다. 다른 인턴쉽에서 tabPane을 호출하면 목록이 생성됩니다. 이전 목록이로드 될 가능성이 있으므로이 목록이 필요하므로이 정보를 컨트롤러에 전달해야합니다.
는 실제로이 상황이 발생합니다
1)
전화 탭에있는 테이블에서로드 빈 목록을 생성하는 기능을 삽입. 그런 다음 데이터가 닫힐 때 데이터베이스에 저장됩니다.
2)
전화 목록을 작성하고 데이터베이스에서 데이터를 소요하고 수정할 수있는 테이블로 전송 특정 플래그 기능 삽입을 호출하는 기능이 표시됩니다.
나는 질문의 모호함이 지금은이 방법
public class TabController implements Initializable {
@FXML
private TabPane tabbedPane;
@FXML
private VisiteController visiteLController;
private ObservableList<Visite> dataVisite = FXCollections.observableArrayList();
private ObservableList<Visite> dataDelVisite = FXCollections.observableArrayList();
@FXML
private LatteController latteLController;
private ObservableList<Latte> dataLatte = FXCollections.observableArrayList();
private ObservableList<Latte> dataDelLatte = FXCollections.observableArrayList();
@FXML
private PartiController partiLController;
private ObservableList<Parti> dataParti = FXCollections.observableArrayList();
private ObservableList<Parti> dataDelParti = FXCollections.observableArrayList();
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
assert tabbedPane != null : "fx:tabbedPane=\"in\" was not injected: check your FXML file 'TabLayout.fxml'.";
tabbedPane.getSelectionModel().selectedItemProperty().addListener((ov, oldTab, newTab) -> {
if(tabbedPane.getSelectionModel().getSelectedIndex() != 0) {
tabbedPane.getScene().getWindow().setWidth(1171);
tabbedPane.getScene().getWindow().setHeight(700);
} else {
tabbedPane.getScene().getWindow().sizeToScene();
}
});
visiteLController.setData(dataVisite, dataDelVisite);
latteLController.setData(dataLatte, dataDelLatte);
partiLController.setData(dataParti, dataDelParti);
}
}
및 설정 방법에 분명히 각 컨트롤러
에 대해 변경 해결하고있어앞에 내가 사과, 나는 분명했다 희망
public void setData(ObservableList<Visite> data, ObservableList<Visite> dataDel) {
this.data = data;
this.dataDel = dataDel;
liveSearh();
}
'TabController'에 대한 코드를 게시 할 수 있습니까? 이것은 http://stackoverflow.com/questions/37068243/share-model-with-nested-controller –
의 복제본처럼 보입니다. 이제 링크를 돌아 보겠습니다. –
질문을 명확히하십시오. 각각의 컨트롤러는 정확히 무엇을 필요로합니까? 그리고 각각의 필요 데이터를 어디서 만들거나 데이터에 액세스 할 수 있습니까? –