Hey Leute,
ich bin ein Java-Anfänger und arbeite mich gerade in JMenüs ein. Ich habe den allgemeinen Aufbau verstanden und versuche nun das ganze effektiv zu gestalten. Ich habe aber keine Idee wie ich mein Ziel erreichen kann. Vielleicht mit einem interface oder einer abstrakten Klasse? Vielleicht hat einer von euch eine Idee
Inhalt des Threads:
- Mein Ziel?
- Was habe ich zum erreichen das Ziels getan?
- Genauere Beschreibung des Vorgangs zur Zielerreichung (Programmablauf) & Quelltext + Bild des aktuellen Stands
Mein Ziel:
Den Titel der GUI dynamisch ändern. Es soll der Titel des aktuell ausgewählten Menüpunktes angezeigt werden und der entsprechende Inhalt in einem JPanel. Ich weiß man kann den Titel via frame.setTitle("") verändern und JPanels via panel.setVisible(true/false) unsichtbar bzw. sichtbar machen, das geht aber mit meiner Variante nicht so einfach, soweit ich informiert bin, - da ich für die Menüitems eine eigene Klasse habe, damit der Quellcode der Klasse GuiMain nicht so aufgebläht wird.
Was habe ich zum erreichen des Ziels getan?
- Ich habe in diesem Forum bzgl. JMenus und MenuListenern geschaut.
- Ich habe mehr als ein dutzend verschiedene Suchbegriffe gegoogled. U.a. über JMenus, addMenuListener, interface menuListener einbinden u.v.m.
Genauere Beschreibung des Vorgangs, Quelltext usw.:
Ich entwickle momentan ein Kassensystem. Dafür benötige ich ebenfalls ein Menü und Inhalte für die jeweiligen Menüpunkte. Das Laden funktioniert soweit. Allerdings möchte ich nicht für jedes Menüitem in meiner GUI-Klasse einen menuListener schreiben, da es den Quellcode sehr aufblähen würde. Also habe ich mir eine Klasse menuItems progammiert in der sowohl der Name des Menüitems steht als auch als ein JPanel.
In meiner Klasse GuiMain erzeuge ich Menüitems und füge Objekte auf das JPanel zu. Nach jedem erzeugten Menüpunkt speichere ich das Menüitem in einer ArrayList, damit ich später noch auf diese Zugriff habe.
ich bin ein Java-Anfänger und arbeite mich gerade in JMenüs ein. Ich habe den allgemeinen Aufbau verstanden und versuche nun das ganze effektiv zu gestalten. Ich habe aber keine Idee wie ich mein Ziel erreichen kann. Vielleicht mit einem interface oder einer abstrakten Klasse? Vielleicht hat einer von euch eine Idee
Inhalt des Threads:
- Mein Ziel?
- Was habe ich zum erreichen das Ziels getan?
- Genauere Beschreibung des Vorgangs zur Zielerreichung (Programmablauf) & Quelltext + Bild des aktuellen Stands
Mein Ziel:
Den Titel der GUI dynamisch ändern. Es soll der Titel des aktuell ausgewählten Menüpunktes angezeigt werden und der entsprechende Inhalt in einem JPanel. Ich weiß man kann den Titel via frame.setTitle("") verändern und JPanels via panel.setVisible(true/false) unsichtbar bzw. sichtbar machen, das geht aber mit meiner Variante nicht so einfach, soweit ich informiert bin, - da ich für die Menüitems eine eigene Klasse habe, damit der Quellcode der Klasse GuiMain nicht so aufgebläht wird.
Was habe ich zum erreichen des Ziels getan?
- Ich habe in diesem Forum bzgl. JMenus und MenuListenern geschaut.
- Ich habe mehr als ein dutzend verschiedene Suchbegriffe gegoogled. U.a. über JMenus, addMenuListener, interface menuListener einbinden u.v.m.
Genauere Beschreibung des Vorgangs, Quelltext usw.:
Ich entwickle momentan ein Kassensystem. Dafür benötige ich ebenfalls ein Menü und Inhalte für die jeweiligen Menüpunkte. Das Laden funktioniert soweit. Allerdings möchte ich nicht für jedes Menüitem in meiner GUI-Klasse einen menuListener schreiben, da es den Quellcode sehr aufblähen würde. Also habe ich mir eine Klasse menuItems progammiert in der sowohl der Name des Menüitems steht als auch als ein JPanel.
Java:
import javax.swing.JMenu;
import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
import javax.swing.event.MenuEvent;
public class MenuItems {
//--> Deklarieren von Variabeln, Arrays & Objekten
//--> Variabeln:
private String str_KategorieName;
//--> Arrays:
//--> Objekte:
private JMenu obj_Menu;
public JPanel obj_Panel;
public MenuItems(String str_KategorieNameNeu) {
str_KategorieName = str_KategorieNameNeu;
obj_Menu = new JMenu(str_KategorieName);
obj_Panel = new JPanel(null);
obj_Panel.setBackground( Color.WHITE );
obj_Panel.setBounds(-1, 0, 797, 450);
obj_Menu.addMenuListener(new MenuListener() {
public void menuSelected(MenuEvent e) {
obj_Panel.setVisible(true);
System.out.println(str_KategorieName);
}
public void menuDeselected(MenuEvent e) {
}
public void menuCanceled(MenuEvent e) {
}
} );
} // Konstruktor
public String gib_str_KategorieName() {
return str_KategorieName;
} // + String gib_KategorieName
public JMenu gib_obj_Menu() {
return obj_Menu;
} // + JMenu gib_obj_Menu
public JPanel gib_obj_Panel() {
return obj_Panel;
} // + JPanel gib_obj_Panel
public void visible_obj_Panel() {
obj_Panel.setVisible(true);
} // + void visible_obj_Panel()
public void invisible_obj_Panel() {
obj_Panel.setVisible(false);
} // + void invisible_obj_Panel
} // + class MenuItems
In meiner Klasse GuiMain erzeuge ich Menüitems und füge Objekte auf das JPanel zu. Nach jedem erzeugten Menüpunkt speichere ich das Menüitem in einer ArrayList, damit ich später noch auf diese Zugriff habe.
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.IOException;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
import javax.swing.event.MenuEvent;
public class GuiMain extends JPanel {
//--> Deklarieren von Variabeln, Arrays & Objekten
//--> Variabeln:
private static JFrame frame = new JFrame("McDonald's");
private static JMenuBar menuBar;
private static ArrayList<MenuItems> arrList_MenuItems;
private String str_AktuelleKategorie = "Startseite";
//--> Arrays:
//--> Objekte:
private Datenbank obj_Datenbank;
public GuiMain() {
//--> Lege bestimmte Dinge für die GuiMain fest
setBackground( Color.WHITE );
setLayout(null);
arrList_MenuItems = new ArrayList<MenuItems>();
navigationErzeugen();
} // Konstruktor
private static void navigationErzeugen() {
// Erzeuge eine neue Navigationsleiste
menuBar = new JMenuBar();
// Erzeuge ein neues Menüitem
MenuItems item = new MenuItems("Startseite");
// Speichere das item in einer ArrayList
arrList_MenuItems.add( item );
item.visible_obj_Panel();
/**
* Füge Inhalt auf das JPanel
*/
/** Startseite */
File imageFile = new File("mcdonalds-logo.jpg");
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
} catch (IOException ioe) {
}
JLabel lbl_imageMCsLogo = new JLabel( new ImageIcon(image) );
item.gib_obj_Panel().add( lbl_imageMCsLogo );
item.gib_obj_Panel().setLayout(null);
lbl_imageMCsLogo.setBounds(250, 50, 300, 290); // width, height
JLabel lbl_Test = new JLabel("<html><h3>Übersicht:</h3></html>");
lbl_Test.setBounds(5, 5, 700, 20);
item.gib_obj_Panel().add( lbl_Test );
JLabel lbl_Filiale = new JLabel("<html>Filiale: <span style='font-weight: normal;'>DE-NRW-BN-021 (aktuell statisch)</span></html>");
lbl_Filiale.setBounds(5, 30, 700, 20);
item.gib_obj_Panel().add( lbl_Filiale );
JLabel lbl_Kasse = new JLabel("<html>Kasse: <span style='font-weight: normal;'>DE-NRW-BN-021-01 (aktuell statisch)</span></html>");
lbl_Kasse.setBounds(5, 60, 700, 20);
item.gib_obj_Panel().add( lbl_Kasse );
frame.getContentPane().add( item.gib_obj_Panel() );
JLabel lbl_Mitarbeiter = new JLabel("<html>Mitarbeiter: <span style='font-weight: normal;'>3 (aktuell statisch)</span></html>");
lbl_Mitarbeiter.setBounds(5, 90, 700, 20);
item.gib_obj_Panel().add( lbl_Mitarbeiter );
item.visible_obj_Panel();
frame.getContentPane().add( item.gib_obj_Panel() );
JLabel lbl_UmsatzGesamt = new JLabel("<html>Umsatz gesamt: <span style='font-weight: normal;'>0,00 €</span></html>");
lbl_UmsatzGesamt.setBounds(5, 120, 700, 20);
item.gib_obj_Panel().add( lbl_UmsatzGesamt );
item.visible_obj_Panel();
menuBar.add( item.gib_obj_Menu() );
frame.getContentPane().add( item.gib_obj_Panel() );
/** Kasse */
// Erzeuge ein neues Menüitem
item = new MenuItems("Kasse");
// Speichere das item in einer ArrayList
arrList_MenuItems.add( item );
item.invisible_obj_Panel();
menuBar.add( item.gib_obj_Menu() );
frame.getContentPane().add( item.gib_obj_Panel() );
/**
* 2 Menüitems habe ich entfernt um den Quellcode zu kürzen
*/
frame.setJMenuBar( menuBar );
} // - void erzeugeNavigation
public static void main(String argv[]) {
frame.setDefaultCloseOperation( frame.EXIT_ON_CLOSE );
frame.setPreferredSize( new Dimension(800, 500) );
frame.getContentPane().add( new GuiMain() );
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} // + static void GuiMain
} // + class GuiMain
Zuletzt bearbeitet: