Ola, Estou deselvovendo um aplicativo que em uma parte dele, tem que criar multiplos tabs, do mesmo tipo, no caso Painel, porem quando eu criava um novo tab, o painel do antigo sumia pq eu copiava do outro, e assim em segida, entao eu pesquisei e vi um cara que falou para criar um outra fxml para pegar o root dele e por no tab, mas isso tambem nao deu certo. alguem pode me ajudar?
Imagem dos tabs
Imagem do novo fxml
codigo
Tab tab = new Tab("NotSaved " + (numTabs + 1));
try {
FXMLLoader loader = new FXMLLoader();
AnchorPane pane = loader.load(getClass().getResource("Assessment.fxml"));
tab.setContent(pane);
numTabs++;
} catch (Exception e) { System.out.println(e);}
tabpane.getTabs().add(tab);
Esse bloco está rodando corretamente
É que voce deve usar uma nova instancia de objeto para vincular um Node
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
/**
*
* @author jorge
*/
public class TabFX extends Application {
int numTabs = 0;
@Override
public void start(Stage primaryStage) {
TabPane tabpane = new TabPane();
try {
numTabs++;
FXMLLoader loader = new FXMLLoader();
AnchorPane pane = loader.load(getClass().getResource("Assessment.fxml"));
Tab tab = new Tab("NotSaved " + numTabs );
tab.setContent(pane);
tabpane.getTabs().add(tab);
// outro
numTabs++;
AnchorPane pane2 = loader.load(getClass().getResource("Assessment.fxml"));
Tab tab2 = new Tab("NotSaved " + numTabs );
tab2.setContent(pane2); // caso coloque "pane" no lugar de "pane2" o Tab 1 ficará em branco, porque estará sendo usado para o tab2
tabpane.getTabs().add(tab2);
// pode ser assim tambem, mas veja que foram criadas novas instancias dos objetos
numTabs++;
pane = loader.load(getClass().getResource("Assessment.fxml"));
tab = new Tab("NotSaved " + numTabs );
tab.setContent(pane);
tabpane.getTabs().add(tab)
} catch (Exception e) {
System.out.println(e);
}
Scene scene = new Scene(tabpane, 600, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
1 curtida