Menü soll immer da bleiben - Frames sollen wechseln

Status
Nicht offen für weitere Antworten.

dyn

Mitglied
Hi!
Ich habe für ein Programm ein bestimmtes Menü.
Ich möchte nun wenn bestimemte Menüpunkt angewählt werden, den Inhalt des aktuellen Frames ändern ohne dass das Menü verschwindet.

Aus dieser Klasse heraus:
Code:
import java.io.*;
import java.util.Vector;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class startingbildschirm extends JFrame implements ActionListener
{

  JLabel obenText, untenText;
  
  
  public startingbildschirm() 
  
  {
    initialisiereAttribute();
    erzeugeMenue();
    // Fenstergroesse setzen
    setSize(800,600);
    // und anzeigen
    setVisible( true );
        
  }
  
  private void initialisiereAttribute()
  {
  	
  	Container contentPane = getContentPane(); 
    contentPane.setLayout(new BorderLayout()); 
   
    
    
    // kein JLabel bAnzeige...weils dann null-pointer gibt!
    obenText = new JLabel("Herzlich Willkommen zu unserem lustigen Glücksrad!", JLabel.CENTER);
    obenText.setFont(new Font("Verdana", Font.BOLD, 24));
    
    
    untenText = new JLabel("Strg+n für ein neues Spiel - Strg+e zum Beenden", JLabel.CENTER);
    untenText.setFont(new Font("Verdana", Font.BOLD, 16));

    Image gRad = getToolkit().getImage("gRad.jpg");

    contentPane.add(obenText, BorderLayout.NORTH);
    contentPane.add(new JLabel(new ImageIcon(gRad)), BorderLayout.CENTER);
    contentPane.add(untenText, BorderLayout.SOUTH);
  }     



	
	 void erzeugeMenue()
  {
  	 // Menüpunkt "Neues Spiel"
    JMenuItem mi_neu = new JMenuItem( "Neues Spiel" );
    mi_neu.setActionCommand( "Neues Spiel" );
    // neues Spiel mit Ctrl-N
    mi_neu.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_N,
	ActionEvent.CTRL_MASK) );
    mi_neu.addActionListener( this );
    
    // Menüpunkt "Ende"
    JMenuItem mi_ende = new JMenuItem( "Ende" );
    mi_ende.setActionCommand( "Ende" );
    // Ende mit Ctrl-E
    mi_ende.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_E,
	ActionEvent.CTRL_MASK) );
    mi_ende.addActionListener( this );
    
    JMenuItem mi_begriffe = new JMenuItem( "Begriff hinzufügen" );
    mi_begriffe.setActionCommand( "Begriffe" );
    // Neuen Begriff mit strg+B
    mi_begriffe.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_B,
	ActionEvent.CTRL_MASK) );
    mi_begriffe.addActionListener( this );
    
    JMenuItem mi_about = new JMenuItem( "Über das Projekt" );
    mi_about.setActionCommand( "About" );
    // About-Fenster mit strg+A
    mi_about.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_A,
	ActionEvent.CTRL_MASK) );
    mi_about.addActionListener( this );
    
    JMenuItem mi_hilfe = new JMenuItem( "Spielablauf" );
    mi_hilfe.setActionCommand( "Hilfe" );
    // About-Fenster mit strg+A
    mi_hilfe.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_A,
	ActionEvent.CTRL_MASK) );
    mi_hilfe.addActionListener( this );
    
    
    JMenu m_spiel = new JMenu( "Spiel" );
    m_spiel.add( mi_neu );
    m_spiel.add( mi_ende );
   
    
    JMenu m_begriffe = new JMenu( "Begriffe" );
    m_begriffe.add( mi_begriffe);
   
    JMenu m_hilfe = new JMenu( "Hilfe" );
    m_hilfe.add( mi_hilfe );
    
   
   
    JMenu m_about = new JMenu( "About" );   
    m_about.add( mi_about );
    
    JMenuBar dieMenueleiste = new JMenuBar();
    dieMenueleiste.add( m_spiel );
    dieMenueleiste.add( m_begriffe );
    dieMenueleiste.add( m_hilfe);
    dieMenueleiste.add( m_about);
  
    setJMenuBar( dieMenueleiste );
  }
   

	
  public void actionPerformed(ActionEvent e)
  {
  	String aktion = e.getActionCommand();
  	
  	   if(aktion.equals ("Neues Spiel"))
	   {
	    this.setVisible(false); 
		startbildschirm s = new startbildschirm();
		
	   }
	   if (aktion.equals ("Ende"))
	   {
	   	System.exit(0);
	   }	
	    if (aktion.equals ("Begriffe"))
	   {
	   	this.dispose();
	    
	   }	   
	   if (aktion.equals ("Hilfe"))
	   {
	   	JOptionPane.showMessageDialog(this,"Eine Spielrunde ist vorbei, wenn der zu erratende Begriff gelöst wurde.\nGewonnen hat der Spieler, der am Ende aller gespielten Runden das\nmeiste Geld eingefahren hat.\n\nVon diesem Geld kann er sich dann einen Keks kaufen.", "So funktioniert das Spiel", JOptionPane.INFORMATION_MESSAGE);
	   }
	    
	   
	   if(aktion.equals ("About"))
	   {
	    JOptionPane.showMessageDialog(this,"Dieses Projekt ist im Rahmen des Java-Kurses im Sommersemester 2005 enstanden.\nEntworfen haben dieses Programm Stefan Martens, Julia Schweppe und Alexandra Marquardt.", "About", JOptionPane.INFORMATION_MESSAGE);
	   }
	   
	   
	   
  }
  
  public static void main (String args[]) 
  {
    new startingbildschirm();
  }

}

möchte ich diese hier aufrufen:


Code:
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;




public class startbildschirm extends JFrame implements ActionListener, ItemListener {
	
	
private JButton ok;
private JComboBox auswahl;
int zahl;


public startbildschirm()
{

initialisiereAttribute();
// Fenstergroesse setzen
setSize(640,480);
// und anzeigen
setVisible( true );
}

private void initialisiereAttribute()
{

Container contentPane = getContentPane(); 
contentPane.setLayout(new FlowLayout()); 

JComboBox auswahl = new JComboBox();
auswahl.addItemListener(this);
auswahl.addItem( "Ein Spieler" );
auswahl.addItem( "Zwei Spieler" );
auswahl.addItem( "Drei Spieler");



JButton ok = new JButton("ok");
ok.setActionCommand("ok");
ok.addActionListener(this); 


contentPane.add(auswahl);
contentPane.add(ok); 


}

public void actionPerformed(ActionEvent event) 
{
	
  String getAC = event.getActionCommand();
    
  
	if(getAC.equals ("ok"))
	{
	  switch (zahl)
	  {
	  case 0:
	  String name1 = JOptionPane.showInputDialog("Spieler 1, wie ist dein Name?");break;
	  case 1: 
	  name1 = JOptionPane.showInputDialog("Spieler 1, wie ist dein Name?");
	  String name2 = JOptionPane.showInputDialog("Spieler 2, wie ist dein Name?");break;
	  case 2:
	  name1 = JOptionPane.showInputDialog("Spieler 1, wie ist dein Name?");
	  name2 = JOptionPane.showInputDialog("Spieler 2, wie ist dein Name?");
	  String name3 = JOptionPane.showInputDialog("Spieler 3, wie ist dein Name?");break;
	  }
	 
	}
}

		
	public void itemStateChanged(ItemEvent e)
 {

 // Wähle jeweilige Textdatei aus!
 JComboBox selectedChoice = (JComboBox)e.getSource();
 zahl = selectedChoice.getSelectedIndex();
 
 }
public static void main (String args[])
{
	startbildschirm s = new startbildschirm();
}

}

Es soll also irgenwdie so laufen, dass es nur eine Main-Methode gibt in der Klasse, wo auch das Menü definiert wird.
Sollte ich vielleicht eine Klasse schreiben, in der nur das Menü geladen wird?
..danke für jegliche Hilfe.
 

karahead

Aktives Mitglied
Also ich würde dir zu dem CardLayout raten.
Was das ist und wozu es gut ist findest du bei google oder java.sun.com

Mit dem CardLayout kann man leicht WIZARD ähnliche Konstrukte erstellen.
Z.B. ein Setup-Programm
 

dyn

Mitglied
hm. gibt es denn keine möglichkeit, dass das menü bestehen bleibt, dafür aber das aktuelle frame halt immer geändert wird?
evtl dass man für jede klasse, die ein einzelnes frame darstellt immer eine referenz auf eine klasse mitgibt, in der NUR das menü enthalten ist? oder so?!
 

karahead

Aktives Mitglied
Naja meines Wissens geht es nicht. Da ein JFrame nicht zu einem Menu gehört sondern ein Menu zu einem JFrame.

Ich sehe nur eine Möglichkeit.
- Du stellst alle Komponenten auf einem JPanel dar oder auf mehreren.
- Das Menu fügst du einem JPanel hinzu.
- Pro Klick auf irgendwas oder wie auch immer deine Aktionen ausgelöst werden, sollen dann die JPanels gewechselt werden. Wie gesagt, dass tauschen der Panels geht am einfachsten mit dem CardLayout.

Naja anders kann ich mir das nicht vorstellen.
Oder du fügst mehreren JFrames die selbe Menu-Instanz hinzu, aber ich weiß nicht ob das überhaupt geht und außerdem hört sich das für mich komisch und gefährlich an.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Wert in Dropdown Menü kursiv schrieben Java Basics - Anfänger-Themen 19
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
H Befehle in einem Menü aktivieren Java Basics - Anfänger-Themen 1
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
J Zusätzliches Menü in einem Terminal erstellen Java Basics - Anfänger-Themen 0
J Panel und Menü Java Basics - Anfänger-Themen 6
J Java Anwendungs-Menü Java Basics - Anfänger-Themen 8
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
J Menü mit mehreren Bildern Java Basics - Anfänger-Themen 5
R Switch: Nach durchlaufen des Case wieder zum Menü Java Basics - Anfänger-Themen 3
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
G menü in simulation Java Basics - Anfänger-Themen 3
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
1 Menü mit Buttons erstellen Java Basics - Anfänger-Themen 10
M Login-Menü Java Basics - Anfänger-Themen 7
MisterSeven Netbeans - Dropdown Menü erstellen? Java Basics - Anfänger-Themen 4
A Menü Java Basics - Anfänger-Themen 7
C kleines Menü erzeugen und anzeigen Java Basics - Anfänger-Themen 11
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
TheKing Java-Menü Machen Java Basics - Anfänger-Themen 7
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
J Java-Menü Machen Java Basics - Anfänger-Themen 7
Antoras Tab über Menü ansteuern Java Basics - Anfänger-Themen 2
G Rechtsklick Menü? Java Basics - Anfänger-Themen 2
G Strich im Menü Java Basics - Anfänger-Themen 2
D JApplet menü Java Basics - Anfänger-Themen 8
A Menü aktivieren Java Basics - Anfänger-Themen 5
N Von einem Menü in Untermenü Java Basics - Anfänger-Themen 3
M Menü Programmieren Java Basics - Anfänger-Themen 2
T Wie kann ich andere Programme in Java über ein Menü öffnen? Java Basics - Anfänger-Themen 12
M Einfaches Menü erstellen Java Basics - Anfänger-Themen 106
M Dialog aus Menü aufrufen Java Basics - Anfänger-Themen 13
T Rechsklick menü erstellen Java Basics - Anfänger-Themen 2
J Menü-strip beenden-knopf mit Ende des Programms belegen ? Java Basics - Anfänger-Themen 2
S RadioButtons im Menü Java Basics - Anfänger-Themen 5
M statt drop down menü - buttons Java Basics - Anfänger-Themen 5
S Menü addActionListener Java Basics - Anfänger-Themen 11
A Java-Konsolen Menü Java Basics - Anfänger-Themen 6
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
C Swing-Fenster mit Menü- und Toolbar Java Basics - Anfänger-Themen 3
F Menü erstellen Java Basics - Anfänger-Themen 14
G PopupMenu; Welches Menü war's denn nun? Java Basics - Anfänger-Themen 6
B Was mach ich falsch mit einem Menü in Swing Java Basics - Anfänger-Themen 2
T Problem bei Menü Java Basics - Anfänger-Themen 2
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Com.Roter Wie soll ich lernen? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
H Koordinateneingabe im 2D Array soll true/false zurückgeben Java Basics - Anfänger-Themen 5
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
V Vererbung Subklasse soll Superklasse verändern Java Basics - Anfänger-Themen 2
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
C Objekt soll ein Array sein. Java Basics - Anfänger-Themen 15
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
kilopack15 Methode soll int-Array zurückgeben Java Basics - Anfänger-Themen 2
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben