Vererbung JTabbedPane vererben in der MainView

Fiedelbambu

Mitglied
Hallo vielleicht hat jemand lust zu Helfen ?

Ich habe in meiner MainMenubar.java eine JTabbedPane und ein JMenu dieses möchte ich in der MainView.java Vererben. Das JMenu funktioniert schon, beim JTabbedPane bin ich noch am Probieren

Java:
package view.menu;

import javax.swing.*;

import art_functions.ArtFunctions;
import view.main.*;
import view.stammdaten.*;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainMenubar extends JMenuBar {

    public MainMenubar() {
        MainMenu mainMenu = new MainMenu();
        add(mainMenu);
    }

    private class MainMenu extends JMenu {

        public MainMenu() {
            super("Menu");

            JMenu personMenu = new JMenu("Person");
            JMenuItem neuItem = new JMenuItem("Neu");
            neuItem.setIcon(new ImageIcon(ArtFunctions.getImageByIndex(3)));
            JMenuItem suchenItem = new JMenuItem("Suchen");
            personMenu.add(neuItem);
            personMenu.add(suchenItem);

            JMenu dbMenu = new JMenu("DB");
            JMenuItem ladenItem = new JMenuItem("Laden");
            JMenuItem speichernItem = new JMenuItem("Speichern");
            dbMenu.add(ladenItem);
            dbMenu.add(speichernItem);

            JMenuItem exitItem = new JMenuItem("Exit");
            exitItem.addActionListener(e -> System.exit(0));

            neuItem.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JTabbedPane tabbedPane = getTabbedPane();
                    if (tabbedPane != null) {
                        TabStammMain tab1 = new TabStammMain();
                        TabStammMain tab2 = new TabStammMain();

                        tabbedPane.addTab("Tab 1", tab1);
                        tabbedPane.addTab("Tab 2", tab2);
                    }
                }
            });

            add(personMenu);
            add(dbMenu);
            add(exitItem);
        }
    }

    private JTabbedPane getTabbedPane() {
        Frame[] frames = Frame.getFrames();
        for (Frame frame : frames) {
            if (frame instanceof JFrame) {
                JFrame jFrame = (JFrame) frame;
                Component[] components = jFrame.getContentPane().getComponents();
                for (Component component : components) {
                    if (component instanceof JTabbedPane) {
                        return (JTabbedPane) component;
                    }
                }
            }
        }
        return null;
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Menu Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        MainMenubar menubar = new MainMenubar();
        frame.setJMenuBar(menubar);

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Stammdaten", new JPanel());
        tabbedPane.addTab("Stammbaum", new JPanel());

        frame.add(tabbedPane, BorderLayout.SOUTH);

        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}


Von hier aus soll es in die Main.View gehen




Java:
package view.main;
import java.awt.BorderLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;

import art_functions.ArtFunctions;
import view.menu.MainMenubar;

public class MainView extends JFrame {
    private static JLabel imageLabel;
    private JTabbedPane tabbedPane;
    
    public MainView() {
        setTitle("Stammbaum");
        setName("MainView");
        
        ImageIcon icon = new ImageIcon(ArtFunctions.getImageByIndex(1));
        setIconImage(icon.getImage());
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        getContentPane().setBackground(ArtFunctions.COLOR);
        
        ImageIcon backgroundImage = new ImageIcon(ArtFunctions.getImageByIndex(7));
        setContentPane(new JLabel(backgroundImage));
        
        imageLabel = new JLabel(backgroundImage);
        add(imageLabel);

        // JTabbedPane view.menu package
        tabbedPane = new JTabbedPane();       
        add(tabbedPane);

        // MainMenubar from the view.menu package
        MainMenubar menubar = new MainMenubar();       
        setJMenuBar(menubar);
    }
    
    public static JLabel getImageLabel() {
        return imageLabel;
    }
    
    public static void main(String[] args) {
        MainView mainView = new MainView();
        
        // Display the JFrame
        mainView.setSize(800, 600);
        mainView.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainView.setVisible(true);
    }
}



In der MainMenubar kann ich die JTabbedPane sehen
1687375474853.png

Leider nicht in der MainView

1687375523826.png

Da soll es eigentlich unten Links hin
 

Zurück
Oben