Tabs in JTabbedPane wechseln, wenn Tabs in eigenen Klassen sind

cosmohorst

Mitglied
Hallo zusammen,
ich habe folgendes Probleme: ich baue ein Projekt auf Basis eines JTabbedPanes. Es ist erst mein zweites Java Projekt. Beim ersten habe ich ebenfalls JTabbedPanes verwendet und alle Tabs in eine GUI Klasse gepackt. Hier konnte ich einfach setSelectedIndex(int) verwenden und er ist in die entsprechenden Tabs gesprungen.

Nun habe ich eine MainFrame Klasse (nur Auszüge):
Java:
public MainFrame () {
            StartTab startTab = new StartTab();
            KundeTab kundeTab = new KundeTab();
            ProjektTab projektTab = new ProjektTab();
            StimmzettelTab stimmzettelTab = new StimmzettelTab();
            ExportTab exportTab = new ExportTab();

            JTabbedPane jtp = new JTabbedPane();
            jtp.addTab("xxx",startTab);
            jtp.addTab("xxx",kundeTab);
            jtp.addTab("xxx",projektTab);
            jtp.addTab("xxx",stimmzettelTab);
            jtp.addTab("xxx",exportTab);
            frame.getContentPane().add(jtp);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
}

und einen Button in der Klasse StartTab mit dem ich zu KundeTab wechseln möchte (usw).
Java:
button1.addActionListener(new ActionListener() {  
            public void actionPerformed (ActionEvent s) {
                s.getActionCommand();

                // Wie komme ich z.B. in die Klasse KundeTab?

                System.out.println("Tab wechseln");
                }
            });

Kann mir bitte jemand helfen? Ich suche schon den ganzen Tag nach einer vernünftigen Lösung ... 🙁
 
Um das setSelectedIndex(int) machen zu können brauchst du ja die Referenz auf die TabbedPane. Kannst du die nicht per getParent() in deiner Klasse StartTab erfragen ? Kommt natürlich auf die Hierarchie der Elemente auf dieser StartTab an. Oder du musst dir in deiner Klasse MainFrame eine Getter-Methode dafür erstellen
 
Vielen Dank für den Tipp!
Also, so sieht meine Lösung nun aus. Ich habe nun im Controller eine Methode erstellt, mit der ich dann in den einzelnen Tabs wieder andere Tabs aufrufen kann:
Java:
    public void tabWechseln(int tab, ActionEvent e) {
      
        Component source = (Component) e.getSource();

        Container parent = source.getParent();// 

        do {

            parent = parent.getParent();

        } while (!(parent instanceof JTabbedPane));

        JTabbedPane jtp = (JTabbedPane)parent;

        jtp.setSelectedIndex(tab);
      
        System.out.println("Klasse aufrufen");
      
    }
 

Zurück
Oben