Verschachtelte JTabbedPanes
-
Hallo Forum,
ich habe ein JTabbedPane, dessen Karteikarten Graphen (JGraph) visualisieren. Das ganze ist eindimensional. Nun soll es aber möglich sein, wenn z. B. das 2. Register angeklickt wird, dass sich statt dem abgebildeten Graphen, ein weiteres JTabbedPane einbettet und die entsprechenden Unterregister eingeblendet werden (also ein JTabbedPane in einem JTabbedPane). Jeder Karteikartenreiter enthält die Komponente GraphContainer (siehe unten), die sich im Konstruktor ein JScrollPane einsetzt, welches einen JGraph(en) beinhaltet.
Wenn nun die Methode "activateInnerTabbedPane()" aufgerufen wird, soll statt dem JGraph(en) das innere JTabbedPane angezeigt werden und dem inneren JTabbedPane wird ein neues Register hinzugefügt.Leider funkioniert es so wie ich es mache nicht. Der JGraph des inneren JTabbedPane wird zwar angezeigt, aber sein Register mit dem Label nicht. Ausserdem kann ich nicht mit der Maus interagieren, weil sofort, wenn ich daraufklicke, der alte JGraph wieder erscheint.
Hat jemand eine Idee?
public class GraphContainer extends JPanel { private GraphManager gmGraphManager; private JTabbedPane tpTabbedPane; public GraphContainer(){ tpTabbedPane = new JTabbedPane(); gmGraphManager = new GraphManager(); setLayout(new BorderLayout()); add(BorderLayout.CENTER, gmGraphManager.createScrollableGraph()); } public JTabbedPane activateInnerTabbedPane(){ setLayout(new BorderLayout()); add(BorderLayout.CENTER, tpTabbedPane); return tpTabbedPane; } } JTabbedPane tmpInnerTabbedPane = ((GraphContainer)globalTabbedPane.getComponentAt(2)).activateInnerTabbedPane(); tmpInnerTabbedPane.addTab("Label", null, new GraphContainer(), "ToolTip");
-
So geht's:
public JTabbedPane activateInnerTabbedPane(){ remove(spScrollPane); add(BorderLayout.CENTER, tpTabbedPane); revalidate(); return tpTabbedPane; }