Methode wird nicht ausgeführt

Status
Nicht offen für weitere Antworten.

waxweazle

Mitglied
Erst mal der Quellcode:

Code:
/**
package game;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import game.Wuerfel;
import game.SpielerAnzahlDialog;

public class Spielfeld extends JPanel  implements MouseListener
{
....

  public JTextField msg;

....
 public Spielfeld()
  {
.....
    //Texte
    info = new JLabel("INFOs :");
    info.setFont(new Font("Comic Sans MS", Font.BOLD, 16));
    msg = new JTextField("Willkommen zu ... ! ");
    msg.setFont(new Font("Comic Sans MS", Font.BOLD, 14));
    msg.setEditable(false);

....    
     
     public void setText()
     {
       System.out.println("Test");
     }

     
     public void setMsg ()
     {
       msg.setText("Test!");
     }
  
.....

  public void hinzufügen()
  {
    //Text hinzufügen
    addZelle(m,1,2,1,3);
    addZelle(a,1,2,8,3);
    addZelle(d,1,2,1,7);
    addZelle(n,1,2,8,7);
    addZelle(info,1,3,0,11);
    addZelle(msg,1,9,1,12);
.....

Zweite Klasse:

Code:
package game;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import game.Spieler;
import game.Spielfeld;

public class SpielerAnzahlDialog extends JDialog implements ActionListener, ItemListener
{
....
 private Spielfeld sf;

  public SpielerAnzahlDialog(Frame owner, String titel)
  {

.....

  public void actionPerformed(ActionEvent ae)
  {
    Object object = ae.getSource();

    //Fenster wird wieder geschlossen
    if(object.equals(btnAbbrechen))
    {
      antwort = 0;
      sf.setText();
      sf.setMsg();
      setVisible(false);
      dispose();
    }

.....

Ich habe das Problem, das die setMsg() funktion nicht ausgeführt wird.... zumindest aktualisiert sich das Textfeld auf dem Bildschirm nicht.
Die Funktion, die mit System.out.println... gibt den Inhalt aus.
Innerhalb der Klasse, kann ich ohne Probleme das Textfeld mit Stings füttern, die auch sofort angezeigt werden, nur von einer anderen Klasse kann ich es nicht aufrufen!!!!

Was habe ich übersehen???
 

Wildcard

Top Contributor
Code:
private Spielfeld sf;
 sf.setText();
und wo setzt du 'sf'?
 

waxweazle

Mitglied
was meinst DU damit, wo ich sf setze???

ich habe weiter unten in einer Klasse folgendes stehen, was wunderbar funktioniert
Code:
  public void mouseClicked(MouseEvent me)
  {
    if(me.getComponent() == anz)
    {
      int temp = 0;
      wuerfel.wuerfeln();
      temp = wuerfel.getAugenzahl();
      msg.setText("Sie haben eine: " + temp + " gewürfelt");
//      System.out.println("Sie haben eine: " + temp + " gewürfelt, würfel");
      refreshWürfel(temp);
...

also die beiden Klassen sind zusammen fast 800 Zeilen code....
aber ich kann sie gerne posten
 

mic_checker

Top Contributor
Vielleicht solltest du mal den kompletten Code posten, ansonsten weiss man nicht wo der Fehler liegt, man kann nur Vermutungen anstellen.

Poste zumindest noch den Konstruktor und die entsprechenden Methoden...
 

waxweazle

Mitglied
Klasse Spielfeld
Code:
/**
 * 

Title: Spielfeld</p>
 *
 * 

Beschreibung: </p>
 *
 * 

Copyright: Copyright (c) 2005</p>
 *
 * 

Organisation: Fachhochschule Frankfurt am Main</p>
 *
 * @author Christian Hoeboer & Sven Lissek & Stefan Wolf
 * @version 1.0
 */
package game;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import game.Wuerfel;
import game.SpielerAnzahlDialog;

public class Spielfeld extends JPanel  implements MouseListener
{
/**
* Konstruktor von Spielfeld initialisiert die 40 Felder des
* char Arrays mit 'n'
*/
  private char [] Spielplan = new char[40];

  // Variablen Deklaration
  private GridBagConstraints gbc;
  private GridBagLayout gbl;

  private Wuerfel wuerfel;

  public JTextField msg;
  private JLabel anz,m,a,d,n,rotstart,gelbstart,grünstart, blaustart,info;
  private JLabel[] normfeld, blaufeld, gelbfeld, grünfeld,rotfeld,blauhaus,rothaus,grünhaus
      ,gelbhaus,pfeil,stein;

/*
  private int punkte;
  private char Eigenschaft;
  private int art;
  public char Farbe[] = "wrgby".toCharArray(); // w= white; r=red; g=green; y = yellow; b=blue;
  private boolean Zustand = false; // true, wenn figur auf dem Feld steht
*/
  public Spielfeld()
  {
    gbc = new GridBagConstraints();
    gbl = new GridBagLayout();

    wuerfel = new Wuerfel();

    for(int i=0; i < 40; i++)
      {
          Spielplan[i]='n';
          // n steht für neutral
      }

// alle, für das Spielfeld relevanten Grafiken werden geladen
    //Würfelgrafiken
    anz = new JLabel(new ImageIcon("würfeln.gif"));
    anz.addMouseListener(this);

    //Pfeile
    pfeil = new JLabel[4];
    pfeil[0] = new JLabel(new ImageIcon("pfeil.gif"));
    pfeil[1] = new JLabel(new ImageIcon("pfeilo.gif"));
    pfeil[2] = new JLabel(new ImageIcon("pfeils.gif"));
    pfeil[3] = new JLabel(new ImageIcon("pfeilw.gif"));

    //Texte
    info = new JLabel("INFOs :");
    info.setFont(new Font("Comic Sans MS", Font.BOLD, 16));
    msg = new JTextField("Willkommen zu Mensch ärger Dich nicht ! ");
    msg.setFont(new Font("Comic Sans MS", Font.BOLD, 14));
    msg.setEditable(false);
    m = new JLabel("Mensch");
    m.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
    a = new JLabel("ärger");
    a.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
    d = new JLabel("Dich");
    d.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
    n = new JLabel("nicht");
    n.setFont(new Font("Comic Sans MS", Font.BOLD, 24));

    //alle Steine
    stein = new JLabel[4];
    stein[0] = new JLabel(new ImageIcon("steinblau.gif"));
    stein[1] = new JLabel(new ImageIcon("steinrot.gif"));
    stein[2] = new JLabel(new ImageIcon("steingelb.gif"));
    stein[3] = new JLabel(new ImageIcon("steingruen.gif"));

    //alle Felder
//normfelder werden in einer For- schleife mit Grafik angebunden
         normfeld = new JLabel[36];
         for(int i=0; i<36; i++)
         {
           normfeld[i] = new JLabel(new ImageIcon("normfeld.gif"));
         }

//blaufelder werden mit Grafik angebunden
         blaustart = new JLabel(new ImageIcon("blaufeld.gif"));
         blaufeld = new JLabel[4];
         blauhaus = new JLabel[4];
         for(int i=0; i<4 ;i++)
         {
           blaufeld[i] = new JLabel(new ImageIcon("blaufeld.gif"));
         }
         blauhaus[0] = new JLabel(new ImageIcon("blau1.gif"));
         blauhaus[1] = new JLabel(new ImageIcon("blau2.gif"));
         blauhaus[2] = new JLabel(new ImageIcon("blau3.gif"));
         blauhaus[3] = new JLabel(new ImageIcon("blau4.gif"));

//rotfelder werden mit Grafik angebunden
         rotstart = new JLabel(new ImageIcon("rotfeld.gif"));
         rotfeld = new JLabel[4];
         rothaus = new JLabel[4];
         for(int i=0; i<4 ;i++)
         {
            rotfeld[i] = new JLabel(new ImageIcon("rotfeld.gif"));
         }
         rothaus[0] = new JLabel(new ImageIcon("rot1.gif"));
         rothaus[1] = new JLabel(new ImageIcon("rot2.gif"));
         rothaus[2] = new JLabel(new ImageIcon("rot3.gif"));
         rothaus[3] = new JLabel(new ImageIcon("rot4.gif"));


//gelbfelder werden mit Grafik angebunden
          gelbstart = new JLabel(new ImageIcon("gelbfeld.gif"));
          gelbfeld = new JLabel[4];
          gelbhaus = new JLabel[4];
          for(int i=0; i<4 ;i++)
          {
             gelbfeld[i] = new JLabel(new ImageIcon("gelbfeld.gif"));
          }
         gelbhaus[0] = new JLabel(new ImageIcon("gelb1.gif"));
         gelbhaus[1] = new JLabel(new ImageIcon("gelb2.gif"));
         gelbhaus[2] = new JLabel(new ImageIcon("gelb3.gif"));
         gelbhaus[3] = new JLabel(new ImageIcon("gelb4.gif"));


//grünfelder werden mit Grafik angebunden
          grünstart = new JLabel(new ImageIcon("grünfeld.gif"));
          grünfeld = new JLabel[4];
          grünhaus = new JLabel[4];
          for(int i=0; i<4 ;i++)
          {
             grünfeld[i] = new JLabel(new ImageIcon("grünfeld.gif"));
          }
          grünhaus[0] = new JLabel(new ImageIcon("grün1.gif"));
          grünhaus[1] = new JLabel(new ImageIcon("grün2.gif"));
          grünhaus[2] = new JLabel(new ImageIcon("grün3.gif"));
          grünhaus[3] = new JLabel(new ImageIcon("grün4.gif"));


    setBackground(Color.white);
    setLayout(gbl);
  }//end of Spielfeld

//------Logik--------------------------------------------------------------------

    public void setElementAt(char elem, int index)
    {
        Spielplan[index]=elem;
    }

    public char elementAt(int index)
    {
        return Spielplan[index];
    }

    public int getPosLast(char elem)
    {
        int pos = 0;
        for(int i=39; i>=0; i--)
        {
          if (Spielplan[i] == elem)
          {
            pos = i;
          }
          else
           pos = 1000;
        }
        return pos;
     }
     
     
     public void setText()
     {
       System.out.println("Test");
     }

     
     public void setMsg ()
     {
       msg.setText("Test!");
     }
     
/*
  setStein setzt für die Spieler, die bei neues Spiel starten, ausgewählt wurden,
  alle Spielsteine auf ihre entsprechende Position
*/
     public void setStein (int nr)
     {
        if(nr == 0)
        {
         for(int i=0; i<4; i++)
         {
           blaufeld[i].setIcon(new ImageIcon("steinblau.gif"));
         }
        }

       if(nr == 1)
      {
        for(int i=0; i<4; i++)
        {
          rotfeld[i].setIcon(new ImageIcon("steinrot.gif"));
        }
      }

      if(nr == 2)
      {
        for(int i=0; i<4; i++)
        {
          gelbfeld[i].setIcon(new ImageIcon("steingelb.gif"));
        }
       }

      if(nr == 3)
      {
        for(int i=0; i<4; i++)
        {
          grünfeld[i].setIcon(new ImageIcon("steingruen.gif"));
        }
      }
     }//end of setStein

//Diese Funktion ändert die angezeigte Würfelgrafik, entsprechend der gewürfelten Zahl
  public void refreshWürfel (int augen)
  {
    switch(augen)
    {
        case 0: anz.setIcon(new ImageIcon("würfeln.gif"));
          break;
        case 1: anz.setIcon(new ImageIcon("eins.gif"));
          break;
        case 2: anz.setIcon(new ImageIcon("zwei.gif"));
          break;
        case 3: anz.setIcon(new ImageIcon("drei.gif"));
          break;
        case 4: anz.setIcon(new ImageIcon("vier.gif"));
          break;
        case 5: anz.setIcon(new ImageIcon("fünf.gif"));
          break;
        case 6: anz.setIcon(new ImageIcon("sechs.gif"));
          break;
    }
    for(int i=0; i<4; i++)
       {
         blaufeld[i].setIcon(new ImageIcon("steinblau.gif"));
       }

   //  System.out.println("Anz: " + anz);
  }

  public void addZelle(Component komp,int hoehe, int breite, int xpos, int ypos)
 {
     gbc.fill = GridBagConstraints.NONE;
     gbc.gridwidth = breite;
     gbc.gridheight = hoehe;
     gbc.gridx = xpos;
     gbc.gridy = ypos;
     gbl.setConstraints(komp,gbc);
     add(komp);
 }

  public void hinzufügen()
  {
    //Text hinzufügen
    addZelle(m,1,2,1,3);
    addZelle(a,1,2,8,3);
    addZelle(d,1,2,1,7);
    addZelle(n,1,2,8,7);
    addZelle(info,1,3,0,11);
    addZelle(msg,1,9,1,12);

    //Würfel hinzufühgen
    addZelle(anz,2,2,7,1);

    //Pfeile hinzufügen
    addZelle(pfeil[0],1,1,3,10);
    addZelle(pfeil[1],1,1,0,3);
    addZelle(pfeil[2],1,1,7,0);
    addZelle(pfeil[3],1,1,10,7);

    //alle Startpunkte von blau
    addZelle(blaufeld[0],1,1,0,0);
    addZelle(blaufeld[1],1,1,1,0);
    addZelle(blaufeld[2],1,1,0,1);
    addZelle(blaufeld[3],1,1,1,1);
    //alle Häuschen von blau
    addZelle(blauhaus[0],1,1,1,5);
    addZelle(blauhaus[1],1,1,2,5);
    addZelle(blauhaus[2],1,1,3,5);
    addZelle(blauhaus[3],1,1,4,5);

    //alle Startpunkte von rot
    addZelle(rotfeld[0],1,1,9,0);
    addZelle(rotfeld[1],1,1,10,0);
    addZelle(rotfeld[2],1,1,9,1);
    addZelle(rotfeld[3],1,1,10,1);
    //alle Häuschen von rot
    addZelle(rothaus[0],1,1,5,1);
    addZelle(rothaus[1],1,1,5,2);
    addZelle(rothaus[2],1,1,5,3);
    addZelle(rothaus[3],1,1,5,4);

    //alle Startpunkte von gelb
    addZelle(gelbfeld[0],1,1,9,9);
    addZelle(gelbfeld[1],1,1,10,9);
    addZelle(gelbfeld[2],1,1,9,10);
    addZelle(gelbfeld[3],1,1,10,10);
    //alle Startpunkte von gelb
    addZelle(gelbhaus[0],1,1,9,5);
    addZelle(gelbhaus[1],1,1,8,5);
    addZelle(gelbhaus[2],1,1,7,5);
    addZelle(gelbhaus[3],1,1,6,5);


    //alle Startpunkte von grün
    addZelle(grünfeld[0],1,1,0,10);
    addZelle(grünfeld[1],1,1,0,9);
    addZelle(grünfeld[2],1,1,1,10);
    addZelle(grünfeld[3],1,1,1,9);
    //alle Startpunkte von grün
    addZelle(grünhaus[0],1,1,5,9);
    addZelle(grünhaus[1],1,1,5,8);
    addZelle(grünhaus[2],1,1,5,7);
    addZelle(grünhaus[3],1,1,5,6);


    //alle Spielfelder hinzufügen
    addZelle(normfeld[0],1,1,4,0);
    addZelle(normfeld[1],1,1,5,0);
    addZelle(rotstart,1,1,6,0);
    addZelle(normfeld[2],1,1,6,1);
    addZelle(normfeld[3],1,1,6,2);
    addZelle(normfeld[4],1,1,6,3);
    addZelle(normfeld[5],1,1,6,4);
    addZelle(normfeld[6],1,1,7,4);
    addZelle(normfeld[7],1,1,8,4);
    addZelle(normfeld[8],1,1,9,4);
    addZelle(normfeld[9],1,1,10,4);
    addZelle(normfeld[10],1,1,10,5);
    addZelle(gelbstart,1,1,10,6);
    addZelle(normfeld[11],1,1,9,6);
    addZelle(normfeld[12],1,1,8,6);
    addZelle(normfeld[13],1,1,7,6);
    addZelle(normfeld[14],1,1,6,6);
    addZelle(normfeld[15],1,1,6,7);
    addZelle(normfeld[16],1,1,6,8);
    addZelle(normfeld[17],1,1,6,9);
    addZelle(normfeld[18],1,1,6,10);
    addZelle(normfeld[19],1,1,5,10);
    addZelle(grünstart,1,1,4,10);
    addZelle(normfeld[20],1,1,4,9);
    addZelle(normfeld[21],1,1,4,8);
    addZelle(normfeld[22],1,1,4,7);
    addZelle(normfeld[23],1,1,4,6);
    addZelle(normfeld[24],1,1,3,6);
    addZelle(normfeld[25],1,1,2,6);
    addZelle(normfeld[26],1,1,1,6);
    addZelle(normfeld[27],1,1,0,6);
    addZelle(normfeld[28],1,1,0,5);
    addZelle(blaustart,1,1,0,4);
    addZelle(normfeld[29],1,1,1,4);
    addZelle(normfeld[30],1,1,2,4);
    addZelle(normfeld[31],1,1,3,4);
    addZelle(normfeld[32],1,1,4,4);
    addZelle(normfeld[33],1,1,4,3);
    addZelle(normfeld[34],1,1,4,2);
    addZelle(normfeld[35],1,1,4,1);
  }
/*
  Wenn im Spielfeld, der Mauszeiger über den Würfel bewegt wird, verändert sich
 der Zeige in eine Hand, wenn er wieder außerhalb des Würfels ist, wird er wieder zum
 Zeiger
*/
  public void mouseEntered(MouseEvent me)
  {
    me.getComponent().setCursor(new Cursor(Cursor.HAND_CURSOR));
  }
  public void mouseExited(MouseEvent me)
  {
    me.getComponent().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  }
/*
  Wenn man auf den Würfel klickt, wird über die Würfelklasse eine Random zahl an
 die Funktion zurückgegeben. Im Massage Feld im unterem Teil des Fensters, wird erst
 eine Meldung über die gewürfelte Zahl angezeigt. Danach wird die Würfelgrafik refreshed
 und das Massage Feld wird nach 3 Sekunden geändert.
*/
  public void mouseClicked(MouseEvent me)
  {
    if(me.getComponent() == anz)
    {
      int temp = 0;
      wuerfel.wuerfeln();
      temp = wuerfel.getAugenzahl();
      msg.setText("Sie haben eine: " + temp + " gewürfelt");
//      System.out.println("Sie haben eine: " + temp + " gewürfelt, würfel");
      refreshWürfel(temp);

      //msg.setText("Wählen sie nun eine Figur aus, die sie ziehen möchte !");
    }
  }
  public void mousePressed(MouseEvent me)
  {
  }
  public void mouseReleased(MouseEvent me)
  {
  }

}//end of class

Klasse SpielerAnzahlDialog
Code:
package game;

/**
 * 

Title: SpielerAnzahlDialog </p>
 *
 * 

Description: Implementiert einen "natürlichen" Würfel, der die Zahlen von
 * 1-6 Würfelt </p>
 *
 * 

Copyright: Copyright (c) 2005</p>
 *
 * 

Company: Fachhochschule Frankfurt am Main</p>
 *
 * @author Christian Hoeboer & Sven Lissek & Stefan Wolf
 * @version 1.0
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import game.Spieler;
import game.Spielfeld;


/*
* Dialogfenster um beim Spielstart, den einzelnen Spielern Name und Farben zuzuweisen
* und um auszuwählen, ob der Spieler Mensch oder Computer sein soll
*/
public class SpielerAnzahlDialog extends JDialog implements ActionListener, ItemListener
{
  private GridBagLayout gbl;
  private GridBagConstraints gbc;
  private JPanel pan;

  private JCheckBox[] checkb;
  private JLabel[] farbe;
  private JTextField[] tf;
  private JComboBox[] combob;

  private JLabel lbl1,lbl2;
  private JButton btnStarten, btnAbbrechen;
  private int antwort = 0;

  private Spieler Spieler1,Spieler2,Spieler3,Spieler4;
  private Spielfeld sf;


// Layout, des Spieler-Auswahlfensters
  public SpielerAnzahlDialog(Frame owner, String titel)
  {
    super(owner, titel, true);
    gbl = new GridBagLayout();
    getContentPane().setLayout(gbl);
    pan = new JPanel(new GridBagLayout());
    setLocationRelativeTo(null);

    checkb = new JCheckBox[4];
    farbe = new JLabel[4];
    tf = new JTextField[4];
    combob = new JComboBox[4];

/*
* Größe des Fensters wird festgelegt, es wird mittig zum Bildschirm ausgerichtet
* und die Anderung der Größe wird ausgeschalten
*/
    this.setSize(275,200);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    this.setLocation( (d.width - this.getWidth()) / 2,
                     (d.height - this.getHeight()) / 2);
    this.setResizable(false);

    sf = new Spielfeld();

    farbe[0] = new JLabel("blau", JLabel.RIGHT);
    farbe[1] = new JLabel("rot", JLabel.RIGHT);
    farbe[2] = new JLabel("gelb", JLabel.RIGHT);
    farbe[3] = new JLabel("grün", JLabel.RIGHT);

//Textzeile wird eingefügt
    lbl1 = new JLabel("Boxen für Spielerauswahl aktivieren");
    gbc = neueZelle(1,4,0,0,0,0);
    gbc.insets =new Insets(5,1,1,1);
    this.getContentPane().add(lbl1, gbc);
/*
* Da wir mit max 4 Spielern spielen, wird die Anordnung der Auswahlfelder
* in einer Schleife realisiert.
* Es wird zuerst jedes Erforderliche Element initialisiert.
* Dannach wird mit der Funktion neueZelle, genau diese mit Ihren Eigenschaften erschaffen
* und nun kann man das erzeugte Element hinzufügen
* Dies geschieht 4 mal
*/
    for(int i=0; i<4; i++)
    {
      checkb[i] = new JCheckBox();
      checkb[i].addItemListener(this);     //zum Abfangen von Ereignissen wir der IL angebunden
      checkb[i].setSelected(false);        //alle Boxen werden default auf disable gesetzt
      gbc = neueZelle(1,1,0,i+1,0,0);
      this.getContentPane().add(checkb[i], gbc);

      gbc = neueZelle(1,1,1,i+1,0,0);
      this.getContentPane().add(farbe[i], gbc);   //Farbenlabels werden implementiert

      tf[i] = new JTextField("Spieler" + (i+1));  //default Spielername ist Spieler 1 , 2 etc
      tf[i].setEditable(false);                   //solange der checkboxbutton nicht aktiviert ist, kann man den Namen nicht ändern
      gbc = neueZelle(1,1,2,i+1,0,0);
      this.getContentPane().add(tf[i], gbc);

      combob[i] = new JComboBox(new String[] {"Mensch","Computer"});   //erstellt Combobox zur Auswahl des Spielertyps
      //combob[i].addActionListener(this);
      combob[i].setEnabled(false);                                     //solange der checkboxbutton nicht aktiviert ist,
                                                                       //kann man den Typ nicht ändern
                                                                       //editierbarkeit ist ausgeschalten
      gbc = neueZelle(1,1,3,i+1,0,0);
      this.getContentPane().add(combob[i], gbc);
    }

//Leerzeile wird eingefügt
    lbl2 = new JLabel("");
    gbc = neueZelle(1,4,0,5,0,0);
    gbc.insets =new Insets(5,5,5,5);
    this.getContentPane().add(lbl2, gbc);

/*
* nun werden noch 2 Button, Starten und Beenden in das Dialogfenster implementiert
*/
    btnStarten = new JButton("Starten");
    btnStarten.addActionListener(this);
    gbc = neueZelle(1,1,2,6,0,0);
    this.getContentPane().add(btnStarten, gbc);

    btnAbbrechen = new JButton("Abbrechen");
    btnAbbrechen.addActionListener(this);
    gbc = neueZelle(1,1,3,6,0,0);
    this.getContentPane().add(btnAbbrechen, gbc);


  }//end of SpielerAnzahlDialog


// ----- Logik des SpielerAnzahlDialogd Fenster--------------------------------
  public void actionPerformed(ActionEvent ae)
  {
    Object object = ae.getSource();

    //Fenster wird wieder geschlossen
    if(object.equals(btnAbbrechen))
    {
      antwort = 0;
      sf.setText();
      sf.setMsg();
      setVisible(false);
      dispose();
    }


    if(object.equals(btnStarten))
    {
//prüft wieviele Spieler teilnehmen
        int SpielerAnz = 0;
        for(int i=0 ; i<4; i++)
        {
            if(checkb[i].isSelected()== true)
            SpielerAnz ++;
        }
/*
*wenn mindestens 2 Spieler teilnehmen, wird überprüft, ob es sich um Computerspieler oder Menschliche
*handelt und die entsprechenden Werte werden übergeben. Dann startet das Spiel
*/
        if (SpielerAnz > 1)
       {
          if(checkb[0].isSelected())
          {
             if("Mensch".equals(combob[0].getSelectedItem()))
             {
               String temp= new String("");
               temp = tf[0].getText();
         //      Spieler1 = new Spieler(temp,true,false,0);
               sf.setStein(0);
             }
 /*            if("Computer".equals(combob[0].getSelectedItem()))
             {
             }
*/          }


         if(checkb[1].isSelected())
         {
            if("Mensch".equals(combob[1].getSelectedItem()))
            {
              String temp= new String("");
              temp = tf[1].getText();
           //   Spieler2 = new Spieler(temp,true,false,10);
              sf.setStein(1);
            }
/*            if("Computer".equals(combob[0].getSelectedItem()))
            {
            }
*/          }

         if(checkb[2].isSelected())
         {
            if("Mensch".equals(combob[2].getSelectedItem()))
            {
              String temp= new String("");
              temp = ("Willkommen Spieler " +tf[2].getText());
              System.out.println(temp);
              sf.setMsg();
           //   Spieler3 = new Spieler(temp,true,false,20);
              sf.setStein(2);
            }
      /*   if("Computer".equals(combob[2].getSelectedItem()))
           {
           }
    */    }

         if(checkb[3].isSelected())
         {
           if("Mensch".equals(combob[3].getSelectedItem()))
            {
              String temp= new String("");
              temp = tf[3].getText();
           //   Spieler4 = new Spieler(temp,true,false,30);
              sf.setStein(3);
             }
      /*      if("Computer".equals(combob[3].getSelectedItem()))
            {

            }
        */ }
// Neues Spiel Fenster wird geschlossen
         setVisible(false);
         dispose();

        }

// wenn weniger als 2 Spieler ausgewählt sind erscheint eine Fehlermeldung
        else
        {
            JOptionPane.showMessageDialog(this,
               "Sie müssen mindestens zwei Spieler auswählen, um anfangen zu können!",
               "Fehler",JOptionPane.ERROR_MESSAGE);
        }
    }
}
  
  public int getAntwort()
  {
    return antwort;
  }

/*
* Wenn der Benutzer einer der Checkboxen aktiviert, kann er den Namen des Spielers und dessen Typ auswählen
* Wenn die Checkbox deaktiviert wird, werden auch die entsprechenden Namen und Typfelder wieder deaktiviert
*/
  public void itemStateChanged(ItemEvent ie)
  {
      for(int i=0; i<4; i++)
      {
        if (checkb[i] == ie.getItemSelectable())
        {
          tf[i].setEditable(!tf[i].isEditable());
          combob[i].setEnabled(!combob[i].isEnabled());
          i = 4;
        }
      }

      boolean enabled = false;
      for(int j=0; j<4; j++)
      {
         if (combob[j].isEnabled() && "Computer".equals( (String) combob[j].getSelectedItem()))
         {
            enabled = true;
         }
      }
   }


  //---- GridBagLayout aufbau ---------------------------------------------------

  private GridBagConstraints neueZelle(int hoehe, int breite, int xpos, int ypos, double x_ausd, double y_ausd)
  {
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets =new Insets(1,1,1,1);
    gbc.fill = GridBagConstraints.BOTH;
    gbc.gridwidth = breite;
    gbc.gridheight = hoehe;
    gbc.gridx = xpos;
    gbc.gridy = ypos;
    gbc.weightx = x_ausd;
    gbc.weighty = y_ausd;
    return gbc;
  }

}
[/code]
 

waxweazle

Mitglied
also Spielfeld selbst wird von Spielmenü aufgerufen

Code:
/**
 * 

Title: SpielMenu</p>
 *
 * 

Beschreibung: </p>
 *
 * 

Copyright: Copyright (c) 2005</p>
 *
 * 

Organisation: Fachhochschule Frankfurt am Main</p>
 *
 * @author Christian Hoeboer & Sven Lissek & Stefan Wolf
 * @version 1.0
 */
package maedn;
import java.awt.Image;
import java.awt.event.*;
import java.io.File;
import java.awt.*;

import javax.swing.*;

import game.Spielfeld;
import game.SpielerAnzahlDialog;
import GUI.StatistikFensterDialog;

public class SpielMenu extends JFrame implements ActionListener, ItemListener
{
  private JMenu jMnu1, jMnu2, jMnu3;
  private JMenuBar jMnuB;
 
  private Spielfeld spielfeld;
  private Image image;

  public SpielMenu() {

    spielfeld = new Spielfeld();

    this.setTitle("Mensch ärgere Dich nicht");

    setJMenuBar(erstelleMenu());
    spielfeld.hinzufügen();
    this.getContentPane().add(spielfeld);

    this.setSize(new Dimension(650, 680));
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    this.setLocation( (d.width - this.getWidth()) / 2,
                     (d.height - this.getHeight()) / 2);
    this.setResizable(false);



//------------------------------------------------------------------------------

    this.addWindowListener(new WindowAdapter()
    {
      public void windowClosing(WindowEvent we)
      {
        System.exit(0);
      }
    });

  } // end of SpielMenu()

  public void itemStateChanged(ItemEvent e)
  {
  }

//---Menü wird erzeugt----------------------------------------------------------

  private JMenuBar erstelleMenu()
  {
    //Menüleiste Erstellen
    jMnuB = new JMenuBar();

    // Memüpunkt Datei
    jMnu1 = new JMenu("Datei");
    jMnuB.add(jMnu1);

    //"Neues Spiel"
    JMenuItem jmnuItem1 = new JMenuItem("Neues Spiel");
    jmnuItem1.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK));
    jmnuItem1.addActionListener(this);
    jMnu1.add(jmnuItem1);

    //Trennlinie
    jMnu1.addSeparator();

    //"Spiel laden"
    JMenuItem jmnuItem2 = new JMenuItem("Spiel laden");
    jmnuItem2.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_MASK));
    jmnuItem2.addActionListener(this);
    jMnu1.add(jmnuItem2);

    //"Spiel speichern"
    JMenuItem jmnuItem3 = new JMenuItem("Spiel speichern");
    jmnuItem3.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_MASK));
    jmnuItem3.addActionListener(this);
    jMnu1.add(jmnuItem3);

    //Trennlinie
    jMnu1.addSeparator();

    //"Beenden"
    JMenuItem jmnuItem4 = new JMenuItem("Beenden");
    jmnuItem4.addActionListener(this);
    jMnu1.add(jmnuItem4);

    //Menüpunkt Statistik
    jMnu2 = new JMenu("Statistiken");
    jMnuB.add(jMnu2);

    //"Gewonnene Spiele"
    JMenuItem jmnuItem5 = new JMenuItem("Gewonnene Spiele");
    jmnuItem5.setAccelerator(KeyStroke.getKeyStroke('G', InputEvent.CTRL_MASK));
    jmnuItem5.addActionListener(this);
    jMnu2.add(jmnuItem5);

    //Menüpunkt Hilfe
    jMnu3 = new JMenu("Hilfe");
    jMnuB.add(jMnu3);

    //"Info"
    JMenuItem jmnuItem6 = new JMenuItem("Info");
    jmnuItem6.setAccelerator(KeyStroke.getKeyStroke('I', InputEvent.CTRL_MASK));
    jmnuItem6.addActionListener(this);
    jMnu3.add(jmnuItem6);

    return jMnuB;
  }

  /**
   * actionPerformed
   * Hier werden alle Menüpunkte mit entsprechenden Fenstern zur Auswahl verknüpft
   * @param e ActionEvent
   */
// ----- Logik Funktionen -----------------------------------------------------
  public void actionPerformed(ActionEvent ae)
  {
      if (ae.getSource() instanceof JMenuItem)
      {
          //wenn im Menüunterpunkt neues Spiel angeklickt wurde, öffnet sich Abfragebox
          if (ae.getActionCommand().equals("Neues Spiel"))
          {
             SpielerAnzahlDialog dlg = new SpielerAnzahlDialog(this,
             "Spieleranzahl und Farben wählen");
             dlg.setVisible(true);
          }

          //wenn im Menüunterpunkt Spiel laden angeklickt wurde, öffnet sich FileDialog
          if (ae.getActionCommand().equals("Spiel laden"))
          {
       /*       FileDialog dlg = new FileDialog(this, "Datei öffnen", FileDialog.LOAD);
              dlg.show();
              lbl.setText("Datei " + dlg.getDirectory() + dlg.getFile() +
                    " ausgewählt");
         */ }

          //wenn im Menüunterpunkt Spiel speichern angeklickt wurde, öffnet sich FileDialog
          if (ae.getActionCommand().equals("Spiel speichern"))
          {
       /*      FileDialog dlg = new FileDialog(this, "Datei speichern unter",
                                        FileDialog.SAVE);
             dlg.show();
             lbl.setText("speichen unter " + dlg.getDirectory() + dlg.getFile());
       */   }

          //wenn im Menüunterpunkt Beenden angeklickt wurde, öffnet sich Abfragefenster
          if (ae.getActionCommand().equals("Beenden"))
          {
               int i = JOptionPane.showConfirmDialog(this,
                                              "Anwendung wirklich beenden?",
                                              "Beenden?",
                                              JOptionPane.YES_NO_OPTION,
                                              JOptionPane.QUESTION_MESSAGE);
               if (i == JOptionPane.YES_OPTION)
               {
               System.exit(0);
               }
          }

      //-----Statistik------------------------------------------------------------------
         if (ae.getActionCommand().equals("Gewonnene Spiele"))
         {
             StatistikFensterDialog dlg = new StatistikFensterDialog(this,
            "Statistik Infos");
            dlg.setVisible(true);

          }

      //-----Info------------------------------------------------------------------

      //wenn im Menüunterpunkt Info angeklickt wurde, öffnet sich Infofenster
         if (ae.getActionCommand().equals("Info"))
        {
             JOptionPane.showMessageDialog(this,
            "Dies ist ein \"Mensch ärgere Dich nicht\" Spiel! " +
                                      "\n\n" + "Version: 0.1 (Alpha Stadium)" +
                                      "\n\n" +
                                      "created by: Sven Lissek, Christian Hoeboer & Stefan Wolf",
                                      "Info", JOptionPane.INFORMATION_MESSAGE);
         }
    }
  } //end of actionEvents
}

aber hier wird nichts an der Spielfeldklasse verändert....
ich probiere schon seit mehreren Stunden den Fehler zu finden, ohne Erfolg....
wie gesagt, die Entwicklungsumgebung zeigt keine Fehler an, kompiliert wird ohne Fehlermeldung, in der Klasse selber werden alle veränderungen sofort aktualisiert, nur kann ich von SpielerAnzahlDialog keine Grafikveränderung am Spielfeld anstoßen, warum auch immer.
 

Wildcard

Top Contributor
Jetzt vestehst du vieleicht meine erste Frage!
Das eine Spielfeld hat nichts mehr mit dem anderen zu tun. Es ist ein neues Objekt.
Wenn du das erste Spielfeld verändern willst brauchst du eine Referenc darauf.
 

waxweazle

Mitglied
ok jetzt mal für Noobs, wie mache ich das???

Habe meine komplette Kreativdenkphase ins Fehlersuchen gesteckt und bin total ausgelaugt.
 

Wildcard

Top Contributor
Die 2 einfachsten Möglichkeiten währen dem wie heisst das noch, scrollscroll, dem SpielerAnzahlDialog im Konstruktor eine Referenz auf das Spielfeld mitgibst, oder in dem du das Spielfeld (wenn es definitiv nur eins geben darf) zum Singelton machst.
Die erste Methode ist nicht schön, aber IMO das kleiner Übel.
Wenn du's schön machen willst Klassenstruktur überdenken und dir in den FAQ den Beitrag von DBAC über DesignPatterns durchlesen.
 

waxweazle

Mitglied
Leider haben wir von der ersten Methode noch nie was gehört, kannst du evtl. mal ein paar zeilen code zur verdeutlichung schreiben?
 

Wildcard

Top Contributor
Wenn SpielerAnzahlDialog erstellt wird das Spielfeld mitgeben:
Code:
SpielerAnzahlDialog dialog = new SpielerAnzahlDialog(spielfeld);
In SpielerAnzahlDialog ein entsprechender Konstruktor:
Code:
public class SpielerAnzahlDialog
{

    private Spielfeld sf;
    
    public SpielerAnzahlDialog(Spielfeld sf)
    {
        this.sf=sf;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
B Warum wird die Methode nicht aufgerufen? AWT, Swing, JavaFX & SWT 9
F Java zeichnet nicht - Methode wird aber ausgeführt AWT, Swing, JavaFX & SWT 2
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
F setIcon wird erst nach der methode ausgeführt AWT, Swing, JavaFX & SWT 4
S Swing PopUp oeffnet sich nach der Methode, die erst nach Fensteraufruf gestartet wird AWT, Swing, JavaFX & SWT 3
M Swing Bild wird nie angezeigt, egal mit welcher Methode! AWT, Swing, JavaFX & SWT 10
F Welche Layout-Methode wird bei Größenänderung aufgerufen? AWT, Swing, JavaFX & SWT 4
X textarea updaten bevor eine Methode aufegerufen wird AWT, Swing, JavaFX & SWT 6
D welche Methode wird beim verstellen der Grösse aufgerufen AWT, Swing, JavaFX & SWT 5
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
M passende Reflexion-Methode?? AWT, Swing, JavaFX & SWT 1
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
M Swing Methode datenLesen() greift auf catchBlock zu? AWT, Swing, JavaFX & SWT 25
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
Z Methode bei Boolean change neu Ausführen AWT, Swing, JavaFX & SWT 9
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
J Rekursive Methode JProgressBar AWT, Swing, JavaFX & SWT 4
A Methode pausieren bis anderes Ereignis ausgeführt AWT, Swing, JavaFX & SWT 2
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Brauche Erklärung von Methode AWT, Swing, JavaFX & SWT 1
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
I Methode Draw3DRect und DrawRect AWT, Swing, JavaFX & SWT 2
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
K Methode repaint() AWT, Swing, JavaFX & SWT 1
A Methode in bestimmten Intervall ausführen AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
P keyTyped-Methode AWT, Swing, JavaFX & SWT 1
D JavaFX Java Methoden mit JavaFX Methode kommunizieren lassen? AWT, Swing, JavaFX & SWT 3
M JavaFX Methode nach initialize() aufrufen AWT, Swing, JavaFX & SWT 6
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S PaintIn - Methode AWT, Swing, JavaFX & SWT 1
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Auf Methode zugreifen (am Schlauch steh) AWT, Swing, JavaFX & SWT 5
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
D Swing DefaultTableModel setValueAt Methode AWT, Swing, JavaFX & SWT 7
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
T Swing JPanel - "Open" Methode? AWT, Swing, JavaFX & SWT 6
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Applet Bricht Methode zwischendruch ab AWT, Swing, JavaFX & SWT 11
K Per Textfield Methode ausführen AWT, Swing, JavaFX & SWT 6
J Swing JTable - nach Sortieren andere Methode aufrufen AWT, Swing, JavaFX & SWT 2
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable's valueChanged Methode überschreiben AWT, Swing, JavaFX & SWT 2
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
N Methode zum Prüfen ob Jtextfield verändert worden ist AWT, Swing, JavaFX & SWT 2
K beim Schließen des JFrames, Methode aufrufen AWT, Swing, JavaFX & SWT 3
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
E Umgang mit der Update Methode AWT, Swing, JavaFX & SWT 38
D Applet Methode in Timer einbinden AWT, Swing, JavaFX & SWT 6
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
P Swing JPanel über Methode setzen AWT, Swing, JavaFX & SWT 2
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
T Swing setText()-Methode Funktioniert nicht AWT, Swing, JavaFX & SWT 7
L JLabel Methode setText funktioniert nicht AWT, Swing, JavaFX & SWT 5
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
S Visual Editor mit main Methode AWT, Swing, JavaFX & SWT 3
G paint-Methode kopiert GUI AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Neue Themen


Oben