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:
möchte ich diese hier aufrufen:
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.
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.