J
jzine
Gast
Hallo,
ich habe folgendes Problem.
Und zwar habe ich das Spiel TicTacToe programmiert, welches auch ohne Probleme funktioniert.
Jetzt wollte ich noch eine Menüleiste dem Spielfenster hinzufügen, jedoch schaffe ich es nicht, dass diese
im selben Fenster wie das Spiel angezeigt wird.
Die Funktionen der Menüleiste gehen auch, so wie sie es sollten. Außer vielleicht der Menüpunkt NEU, den ich noch nicht getestet habe und evtl. den Code noch überarbeiten muss.
Das einzige Problem ist, dass ich nun schon seit 2 Tagen versuche, dass im Fenster des TicTacToe-Spiels auch die
Menüleiste angezeigt wird. Nur leider ohne Erfolg.
Ich bin auch noch nicht so erfahren in JAVA, aber vielleicht weiß ja einer von euch Rat!?
Hier ist der Code, der mich noch zum Wahnsinn treibt:
ich habe folgendes Problem.
Und zwar habe ich das Spiel TicTacToe programmiert, welches auch ohne Probleme funktioniert.
Jetzt wollte ich noch eine Menüleiste dem Spielfenster hinzufügen, jedoch schaffe ich es nicht, dass diese
im selben Fenster wie das Spiel angezeigt wird.
Die Funktionen der Menüleiste gehen auch, so wie sie es sollten. Außer vielleicht der Menüpunkt NEU, den ich noch nicht getestet habe und evtl. den Code noch überarbeiten muss.
Das einzige Problem ist, dass ich nun schon seit 2 Tagen versuche, dass im Fenster des TicTacToe-Spiels auch die
Menüleiste angezeigt wird. Nur leider ohne Erfolg.
Ich bin auch noch nicht so erfahren in JAVA, aber vielleicht weiß ja einer von euch Rat!?
Hier ist der Code, der mich noch zum Wahnsinn treibt:
Code:
package xogame;
import java.awt.*;
import javax.swing.*;
import javax.swing.JButton.*;
import javax.swing.JLabel;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame implements ActionListener {
private JFrame fenster = new JFrame("X-O Das JAVA-Spiel");
private JButton feld1 = new JButton("");
private JButton feld2 = new JButton("");
private JButton feld3 = new JButton("");
private JButton feld4 = new JButton("");
private JButton feld5 = new JButton("");
private JButton feld6 = new JButton("");
private JButton feld7 = new JButton("");
private JButton feld8 = new JButton("");
private JButton feld9 = new JButton("");
private String zeichen = "";
public int zaehler = 0;
public boolean sieg = false;
public Main() throws Exception {
add(new Menu());
/* Fenster für Spiel erstellen */
fenster.setSize(300,300);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setLayout(new GridLayout(3,3));
/* Die einzelnen Felder dem Fenster hinzufügen */
fenster.add(feld1);
fenster.add(feld2);
fenster.add(feld3);
fenster.add(feld4);
fenster.add(feld5);
fenster.add(feld6);
fenster.add(feld7);
fenster.add(feld8);
fenster.add(feld9);
/* Den einzelnen Feldern einen ActionListener hinzufügen */
feld1.addActionListener(this);
feld2.addActionListener(this);
feld3.addActionListener(this);
feld4.addActionListener(this);
feld5.addActionListener(this);
feld6.addActionListener(this);
feld7.addActionListener(this);
feld8.addActionListener(this);
feld9.addActionListener(this);
/* Das Fenster auf dem Bildschirm sichtbar machen */
fenster.setVisible(true);
}
public void actionPerformed(ActionEvent a){
zaehler++;
/* Berechnen wer am Zug ist */
if(zaehler == 1 || zaehler == 3 || zaehler == 5 || zaehler == 7
|| zaehler == 9){
zeichen = "X";
} else if(zaehler == 2 || zaehler == 4 || zaehler == 6 || zaehler == 8
|| zaehler == 10){
zeichen = "O";
}
/* Das Zeichen X bzw. O auf den Feldern anzeigen lassen */
if(a.getSource() == feld1){
feld1.setText(zeichen);
feld1.setEnabled(false);
}else if(a.getSource() == feld2){
feld2.setText(zeichen);
feld2.setEnabled(false);
}else if(a.getSource() == feld3){
feld3.setText(zeichen);
feld3.setEnabled(false);
}else if(a.getSource() == feld4){
feld4.setText(zeichen);
feld4.setEnabled(false);
}else if(a.getSource() == feld5){
feld5.setText(zeichen);
feld5.setEnabled(false);
}else if(a.getSource() == feld6){
feld6.setText(zeichen);
feld6.setEnabled(false);
}else if(a.getSource() == feld7){
feld7.setText(zeichen);
feld7.setEnabled(false);
}else if(a.getSource() == feld8){
feld8.setText(zeichen);
feld8.setEnabled(false);
}else if(a.getSource() == feld9){
feld9.setText(zeichen);
feld9.setEnabled(false);
}
/* Herausfinden wer der Sieger ist */
/* waagerechte Siegmöglichkeiten */
if( feld1.getText() == feld2.getText() && feld2.getText() == feld3.getText() && feld1.getText() != ""){
sieg = true;
}
else
if(feld4.getText() == feld5.getText() && feld5.getText() == feld6.getText() && feld4.getText() != ""){
sieg = true;
}
else
if(feld7.getText() == feld8.getText() && feld8.getText() == feld9.getText() && feld7.getText() != ""){
sieg = true;
}
/* senkrechte Siegmöglichkeiten */
else if(feld1.getText() == feld4.getText() && feld4.getText() == feld7.getText() && feld1.getText() != ""){
sieg = true;
} else if(feld2.getText() == feld5.getText() && feld5.getText() == feld8.getText() && feld2.getText() != ""){
sieg = true;
} else if(feld3.getText() == feld6.getText() && feld6.getText() == feld9.getText() && feld3.getText() != ""){
sieg = true;
}
/* diagonale Siegmöglichkeiten */
else if(feld1.getText() == feld5.getText() && feld5.getText() == feld9.getText() && feld1.getText() != ""){
sieg = true;
} else if(feld3.getText() == feld5.getText() && feld5.getText() == feld7.getText() && feld3.getText() != ""){
sieg = true;
} else{
sieg = false;
}
/* Eine Meldung anzeigen lassen, falls jemand gewonnen hat bzw. bei unentschieden */
if (sieg == true){
JOptionPane.showMessageDialog(null, "der Spieler " + zeichen +
" hat gewonnen!");
NochmalSpielen();
} else if(zaehler == 9 && sieg == false){
JOptionPane.showMessageDialog(null, "Unentschieden!");
NochmalSpielen();
}
}
/* Nachfragen ob nochmal gespielt werden soll */
public void NochmalSpielen() {
int nachfragen = JOptionPane.showConfirmDialog(null, "Wollen Sie noch "
+"ein Spiel spielen?", "Bitte auswählen",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(nachfragen == JOptionPane.YES_OPTION) neustarten();
else System.exit(0);
}
/* Spiel neustarten*/
public void neustarten(){
feld1.setText("");
feld1.setEnabled(true);
feld2.setText("");
feld2.setEnabled(true);
feld3.setText("");
feld3.setEnabled(true);
feld4.setText("");
feld4.setEnabled(true);
feld5.setText("");
feld5.setEnabled(true);
feld6.setText("");
feld6.setEnabled(true);
feld7.setText("");
feld7.setEnabled(true);
feld8.setText("");
feld8.setEnabled(true);
feld9.setText("");
feld9.setEnabled(true);
sieg = false;
zaehler = 0;
}
/* MENU */
public class Menu extends JMenuBar {
public Menu(){
/* Menüleiste für ein JFrame erzeugen */
JMenuBar menuBar = new JMenuBar();
setTitle ( "Menü Beispiel");
setSize ( 150 , 150 ) ; setSize (150, 150);
/* Menüleiste auf den Rahmen hinzufügen */
setJMenuBar(menuBar);
menuBar.setVisible(true);
/* Zwei Drop-Down-Menüs Datei und Einstellungen der Menüleiste
* hinzufügen und festlegen */
JMenu fileMenu = new JMenu ("Datei");
JMenu editMenu = new JMenu ("Hilfe");
menuBar.add(fileMenu);
menuBar.add(editMenu);
/* Menüpunkte zum Drop-Down-Menü hinzufügen */
JMenuItem newAction = new JMenuItem ("Neues Spiel");
JMenuItem exitAction = new JMenuItem ("Beenden");
JMenuItem howToAction = new JMenuItem ("Anleitung");
JMenuItem creditsAction = new JMenuItem ("Credits");
/* Buttongruppe erzeugen */
ButtonGroup bg = new ButtonGroup();
fileMenu.add(newAction);
fileMenu.addSeparator();
fileMenu.add(exitAction);
editMenu.add(howToAction);
editMenu.addSeparator();
editMenu.add(creditsAction);
/* Action-Performed-Methode dem Menuelement Neu hinzufügen */
newAction.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent n){
System.out.println("Sie haben gerade den Menüpunkt NEU gedrückt");
int nachfragen = JOptionPane.showConfirmDialog(null, "Wollen Sie wirklich "
+"neustarten?", "Bitte auswählen",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(nachfragen == JOptionPane.YES_OPTION) {
feld1.setText("");
feld1.setEnabled(true);
feld2.setText("");
feld2.setEnabled(true);
feld3.setText("");
feld3.setEnabled(true);
feld4.setText("");
feld4.setEnabled(true);
feld5.setText("");
feld5.setEnabled(true);
feld6.setText("");
feld6.setEnabled(true);
feld7.setText("");
feld7.setEnabled(true);
feld8.setText("");
feld8.setEnabled(true);
feld9.setText("");
feld9.setEnabled(true);
sieg = false;
zaehler = 0;
} else if(nachfragen == JOptionPane.NO_OPTION) {
}
}
});
/* Action-Performed-Methode dem Menuelement Beenden hinzufügen */
exitAction.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("Sie haben gerade den Menüpunkt BEENDEN gedrückt");
int nachfragen = JOptionPane.showConfirmDialog(null, "Wollen Sie wirklich "
+"beenden?", "Bitte auswählen",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(nachfragen == JOptionPane.YES_OPTION){
System.exit(0);} else if(nachfragen == JOptionPane.NO_OPTION){
}
}
});
howToAction.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent h){
System.out.println("Sie haben gerade den Menüpunkt ANLEITUNG gedrückt");
JFrame help = new JFrame("Anleitung");
help.setSize(250,200);
help.setVisible(true);
JLabel text = new JLabel();
text.setText("<html>Bei diesem Spiel kommt es darauf an, 3 Kreuze
" +
"(3 Kreise) entweder waagerecht, senkrecht oder
" +
"diagonal nebeneinander zu setzen.
" +
"Das Spiel ist dann zu Ende, wenn als erstes 3
" +
"Kreuze (Kreise) nebeneinander platziert
" +
"wurden.
" +
"Spieler 1 = X
" +
"Spieler 2 = O</html>");
text.setFont(new Font("Serif",Font.PLAIN,12));
text.setHorizontalAlignment(JLabel.LEADING);
text.setVerticalAlignment(JLabel.TOP);
text.setForeground(Color.black);
help.getContentPane().add(text);
text.setVisible(true);
}
});
creditsAction.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent a){
System.out.println("Sie haben gerade den Menüpunkt CREDITS gedrückt");
JFrame about = new JFrame("Credits");
about.setSize(270,150);
about.setVisible(true);
JLabel text2 = new JLabel();
text2.setText("<html>Studienarbeit: Programmierung und Datenbanken
" +
"
" +
"Erstellt von:
" +
"xyz
" +
"MUK4 - Sommersemester 2008
" +
"<html>");
text2.setFont(new Font("Serif",Font.PLAIN,12));
text2.setHorizontalAlignment(JLabel.LEADING);
text2.setVerticalAlignment(JLabel.TOP);
text2.setForeground(Color.black);
about.getContentPane().add(text2);
text2.setVisible(true);
}
});
}
}
public static void main(String[] args) throws Exception {
new Main(); }
}