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
Von hier aus soll es in die Main.View gehen
In der MainMenubar kann ich die JTabbedPane sehen
Leider nicht in der MainView
Da soll es eigentlich unten Links hin
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
Leider nicht in der MainView
Da soll es eigentlich unten Links hin