einfaches menü erstellen

also, ich bin jetzt nen stückchen weiter. habe alles jetzt soweit überarbeitet das ich keine fehlermeldungen mehr bekomme, das programm wird auch kompiliert und lässt sich ausführen. allerdings wird die menübar nicht angezeigt.
so sieht's momentan aus (ich hoffe ich poste nich zu viel quellcode)
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;      // für Dateioperationen

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class Hangman extends JPanel { 
	   
	private static final long serialVersionUID = 1L;
	// Globale Variablen
	private JMenuBar bar = null;
	private JMenu Datei = null;
	private JMenu Hilfe = null;
	private JMenuItem Nochmal = null;
	private JMenuItem Beenden = null;
	private JMenuItem Spielregeln = null;
	private JLabel text = null; 
    final static int WND_B=435, WND_H=360;
	private static final String EXIT_ON_CLOSE = null;
    final int SX=50, SY=50;
    RandomAccessFile file;
    String myword=null;  // das zu erratene wort
    char xyword[];        // das ungelöste Wort
    char probed[];
    char notprobed[];
    char alphab[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N',
                   'O','P','Q','R','S','T','U','V','W','X','Y','Z',
		           'Ä','Ö','Ü','ß'};
    int mistakes=0;  // Anzahl der Fehler
    int tries=0;     // Anzahl der Versuche
    KL CONTROL;
    char c;
 
    public Hangman() {                // Hauptroutine
    
	String stmp=new String();
	bar = new JMenuBar();
    
    Datei = new JMenu("Datei");
    Hilfe = new JMenu("Hilfe");
    
    Nochmal = new JMenuItem("Spiel neu starten");
    Beenden = new JMenuItem("Beenden");
    Spielregeln = new JMenuItem("Spielregeln");
    
    text = new JLabel("Diese Anwendung demonstriert die Verwendung von Menüs");
    
    setJMenuBar(bar);
    
    bar.add(Datei);
    bar.add(Hilfe);
    
    Datei.add(Nochmal);
    Datei.add(Beenden);
    
    Hilfe.add(Spielregeln);
    
    getContentPane().add(text);
    
    Beenden.addActionListener((ActionListener) this);
    Spielregeln.addActionListener((ActionListener) this);
    Nochmal.addActionListener((ActionListener) this);
    
    setDefaultCloseOperation(EXIT_ON_CLOSE);
 } 
    
	private void setDefaultCloseOperation(String exitOnClose) {
		// TODO Auto-generated method stub
		
	}

	private void setJMenuBar(JMenuBar bar2) {
		// TODO Auto-generated method stub
		
	}

	private Container getContentPane() {
		// TODO Auto-generated method stub
		return null;
	}

	{
		int wordcount=0;           // neuer Integer für Wörterzahl
	    int wordseek=0;            // ~ für Zielwort-Position
	    RandomAccessFile f=new RandomAccessFile("hangman.dat","r");
	    String stmp;
		while ((stmp=f.readLine())!=null) {  // solange das, was wir lesen, noch sichtbar ist
		if (stmp.charAt(0) != '#') {      // und wenn kein '#' am anfang steht
		    wordcount++;                  // zähle es als Wort
		}  
	    }
	    if (wordcount==0) {
	    	System.out.println("ACHTUNG! In der Datendatei sind keine gültigen Wörter zu finden.");
	    	System.exit(0);
	    }
	    System.out.println("Woerter in Datendatei: "+wordcount);  // Statusbericht
	    while (wordseek==0) {    // Solange wordseek noch 0 ist, tue ...
		wordseek=(int)(Math.random()*wordcount)+1;  // hol' Dir einen Integer-Wert
	    }
	    System.out.print("Ausgewaehltes Wort: #"+wordseek);  // Statusbericht
	    f.seek(0);      // Position auf Dateianfang setzen
	    wordcount=0;    // Wieder auf NULL

	    while ((stmp=f.readLine())!=null) {   // und das ganze von vorne
		if (stmp.charAt(0) != '#') {
		    wordcount++;
		    if (wordcount==wordseek) {     // wenn an der Position, die wir suchen ...
			myword=stmp;               // setze myword auf gerade gelesenen String
			break;                    
		    }
		}
	    }
	    f.close();         // Datei wieder schließen
	}
	catch(IOException ioe) {    // Falls ein Fehler auftreten sollte Fehlermeldung ausgeben
	    System.out.println("IOException: "+ioe.toString());  // Fehlermeldung
	    System.out.println("\n\nFehler beim Bearbeiten der Datendatei. Stellen Sie sicher, daß die Datei HANGMAN.DAT auch existiert und lesbar ist.");
	    System.exit(0);
	}
	
	CONTROL=new KL();   // neuer KeyListener: CONTROL
	void addKeyListener(CONTROL];  // hinzufügen
	xyword=new char[myword.length()];      // array erstellen
	for (int i=0;i<myword.length();i++) {  // array initialisieren
	    xyword[i]='_';
	}
	probed=new char[alphab.length];                // array erstellen
	notprobed=new char[alphab.length];
	for (int i=0;i<alphab.length;i++) {            // array initialisieren
	    probed[i]='-';
	    notprobed[i]=alphab[i];
	}
    }
  public void update(Graphics g)
    {
         paint(g);
    }

    public void paint(Graphics g) {      // die Grafiken
    Toolkit tk=Toolkit.getDefaultToolkit(); 
	// g.drawString("Datensaetze: "+maxdat,40,350);
	// g.drawString("Wort: "+myword,40,200);
	// g.drawString("Zeichen: "+c,40,230);
	g.setColor(Color.black);           // Farbe auf Weiß
	g.fillRect(0,0,WND_B,WND_H);       // Fenster Weiß machen
	g.drawImage(tk.getImage("images/bg.gif"),1,1,this);
	g.drawString("Wort: "+new String(xyword),40,215);
	if (mistakes!=-1) {
	    g.drawString("Buchstaben: ",40,260);
	    for (int i=0;i<alphab.length;i++) {
		g.drawChars(probed,i,1,118+i*8,260);
		g.drawChars(notprobed,i,1,118+i*8,275);
	    }
	    g.drawString("Fehler: "+mistakes,40,230);
	}
	UpdateHangMan(g);    // Hangman updaten
    }

    public void UpdateHangMan(Graphics g) {
	Toolkit tk=Toolkit.getDefaultToolkit();   // Toolkit (für Grafikdatei-Support) zuweisen
	
	switch(mistakes) {   // CASE mistakes of ...
	case 6:
	    g.drawImage(tk.getImage("images/hm6.gif"),SX,SY,this);
	    g.setColor(Color.red);
	    g.drawString(">>> VERLOREN <<<",WND_B/2-70,WND_H/2+10);
	    g.setColor(Color.white);
	    g.drawString("Das gesuchte Wort war '"+myword+"'!",WND_B/4-100,WND_H/2-10);
	    removeKeyListener(CONTROL);   // Tastenkontrolle abschalten
	    break;
	case 5:
	    g.drawImage(tk.getImage("images/hm5.gif"),SX,SY,this);
	    break;
	case 4:
	    g.drawImage(tk.getImage("images/hm4.gif"),SX,SY,this);
	    break;
	case 3:
	    g.drawImage(tk.getImage("images/hm3.gif"),SX,SY,this);
	    break;
	case 2:
	    g.drawImage(tk.getImage("images/hm2.gif"),SX,SY,this);
	    break;
	case 1:
	    g.drawImage(tk.getImage("images/hm1.gif"),SX,SY,this);
	    break;
	case 0:
	    g.drawImage(tk.getImage("images/hm0.gif"),SX,SY,this);
	    break;
	case -1:
	    g.drawImage(tk.getImage("images/hm.gif"),SX,SY,this);
	    g.setColor(Color.green);
	    g.drawString(">>> GEWONNEN <<<",WND_B/2-70,WND_H/2+10);
	    g.drawString(">>> GEWONNEN <<<",WND_B/2-70,WND_H/2+10);
	    removeKeyListener(CONTROL);
	    break;
	}

    }

    class KL implements KeyListener {
	public void keyPressed(KeyEvent e) { }
	public void keyReleased(KeyEvent e) { }
	public void keyTyped(KeyEvent e) {
	    c=e.getKeyChar();              // Taste holen
	    c=Character.toUpperCase(c);    // Buchstabe(?) evtl. GROß machen
	    int i;                        
	    boolean status=false;        // Booleans
	    boolean check=false;         // für versch. Status-Werte
	    for (i=0;i<alphab.length;i++) {
	    	if (c==alphab[i]) {        // wenn c = einer der Buchstaben des Alphabets ist ...
		    if (probed[i]!=c) probed[i]=c; else check=true;  // und der noch nicht vorher getippt wurde, dann ... u.s.w.
		    if (notprobed[i]==c) notprobed[i]='-';
		}
	    }
	    int underscores=0;            // Integer für Anzahl der "_" im bisherigen Wort
	    for (i=0;i<myword.length();i++) {
		if (c==Character.toUpperCase(myword.charAt(i))) {
		    xyword[i]=myword.charAt(i);
		    status=true;
		}
		if (xyword[i]=='_') underscores++;
	    }
	    if (!status && !check) mistakes++;  // wenn der Buchstabe Falsch ist und nicht schon einmal getippt wurde mistakes+1
	    if (!check) tries++;   // solange kein doppelter Tip: tries+1;
	    if (underscores==0 || mistakes>=6) {
		System.out.println(" ("+myword+")");
		System.out.println("Anzahl Versuche: "+tries+"    davon falsch: "+mistakes);
		System.out.println("Getippte Buchstaben: "+new String(probed));
		System.out.println("Anzahl versch. Buchstaben im Wort: "+(tries-mistakes));
		System.out.println("Trefferquote: "+(((tries-mistakes)*100)/tries)+"%");
	    }
	    if (underscores==0) mistakes=-1;   // wenn keine fehlenden Zeichen im Lösungswort ...
	    if (mistakes>=6) mistakes=6;       // wenn mehr als 5 Fehler gemacht wurden
	    repaint();        // Grafikfenster neuzeichnen
	}
    }
    private static void initializeNewWindow(){
        JFrame frame= new JFrame();       // neues Fenster
        	        frame.addWindowListener(new WindowAdapter() {   // WindowListener hinzufügen
        	            public void windowClosing(WindowEvent e) {  // wenn auf X geklickt:
        	                System.out.println();
        	                System.exit(0);       // Programm beenden.
        	            }
        	        });
        	          	        
        	        frame.setLayout(new BorderLayout());
        	        JPanel buttonPanel = new JPanel();
        	        buttonPanel.setLayout(new FlowLayout());
        	        buttonPanel.setBackground(Color.black);

        	        final JFrame f = frame;
        	        Button button1 = new Button("Nochmal");
        	                       button1.setPreferredSize(new Dimension(80,20));
        	                       button1.addActionListener(new ActionListener() {
        	                       public void actionPerformed(ActionEvent arg0) {
        	                           System.out.print("Nochmal...");
        	                           f.dispose();
                                               initializeNewWindow();
        	                           }
        	      });
        	        Button button2 = new Button("Beenden");
        	        button2.setPreferredSize(new Dimension(80,20));
        	        button2.addActionListener(new ActionListener() {
        	            public void actionPerformed(ActionEvent arg0) {
        	            System.out.print("Bis zum nächsten mal...");
        	            System.exit(0); 
        	            }
        	      });
    
        	        Hangman Jpanel = new Hangman();
        	        frame.add(Jpanel,BorderLayout.CENTER);
        	        frame.setTitle(".:Hangman:.");  // Titel setzen
        	        frame.setSize(WND_B, WND_H);   // Größe setzen
        	        frame.setBackground(Color.black);
        	        frame.setVisible(true);                  // auf den Bildschirm
        	        Jpanel.requestFocusInWindow();
    }       	          
    public void actionPerformed(ActionEvent evt) {
        
        if (evt.getSource() == Spielregeln) {
           System.out.println("Mach Was");
        }
        else if (evt.getSource() == Beenden) {
           System.exit(0);
        }
        else if (evt.getSource() == Nochmal) {
           System.out.println("Programm erstellt von mir");
        }
     } 
	public static void main(String args[]) {
	       Hangman test = new Hangman();
	       test.pack();
	       test.setVisible(true); 
    	   initializeNewWindow();
    	    }

	private void pack() {
		// TODO Auto-generated method stub
		
	} 
}
 
Zuletzt bearbeitet:
Vielleicht solltest du auch das machen, was ich gesagt hab.
Du musst die MenuBar deinem Fenster hinzufügen.
Damit es aber mal komplett hier steht.
Code:
frame.setJMenuBar(hauptMenue);

Ich habe auch vorhin gesagt, dass du nicht Swing und AWT komponenten Vermischen solltest.

Du benutzt JFrame(Swing) und eine MenuBar(AWT). Für ein JFrame wäre das die JMenuBar. Alle Swing-Komponenten fangen mit einem J an und heißen genau wie bei AWT.

MFG

zEriX
 
so hab jetzt das menü usw auch mit swing gemacht (wie du oben sehen kannst) jetzt ist aber wieder das ding seit dem ich das alles in swing geändert habe, krieg ich von compiler fehlermeldungen das an einigen stellen der syntax nicht mehr stimm.


Syntax error on token "catch", Identifier expected line 120
Syntax error on token "CONTROL", VariableDeclaratorId expected after this token line1 26
Syntax error on token(s), misplaced construct 127
Syntax error on tokens, delete these tokens line 127
Syntax error on token "]", { expectedline 128
 
Ich weiß ja nicht was du gemacht hast, aber es sieht aus als hättest du was gelöscht.

Code:
 {
    int wordcount=0;           // neuer Integer für Wörterzahl
      int wordseek=0;            // ~ für Zielwort-Position
      RandomAccessFile f=new RandomAccessFile("hangman.dat","r");
      String stmp;
    while ((stmp=f.readLine())!=null) {  // solange das, was wir lesen, noch
                                          // sichtbar ist
    if (stmp.charAt(0) != '#') {      // und wenn kein '#' am anfang steht
        wordcount++;                  // zähle es als Wort
    }

So beginnt nämlich keine Methode. Zu dem catch fehlt auch das try. Deshalb kommen die Fehler und nicht weil du jetzt die Swingklassen benutzt.

MFG

zEriX
 
Zuletzt bearbeitet:
ups, hatte da was übersehen, da fehlt wirklich nen stück^^ so soll das aussehen

Code:
public Hangman() {                // Hauptroutine
    
	String stmp=new String();
	try {
		int wordcount=0;           // neuer Integer für Wörterzahl
	    int wordseek=0;            // ~ für Zielwort-Position
	    RandomAccessFile f=new RandomAccessFile("hangman.dat","r");
	    while ((stmp=f.readLine())!=null) {  // solange das, was wir lesen, noch sichtbar ist
		if (stmp.charAt(0) != '#') {      // und wenn kein '#' am anfang steht
		    wordcount++;                  // zähle es als Wort
		}  
	    }
	    if (wordcount==0) {
	    	System.out.println("ACHTUNG! In der Datendatei sind keine gültigen Wörter zu finden.");
	    	System.exit(0);
	    }
	    System.out.println("Woerter in Datendatei: "+wordcount);  // Statusbericht
	    while (wordseek==0) {    // Solange wordseek noch 0 ist, tue ...
		wordseek=(int)(Math.random()*wordcount)+1;  // hol' Dir einen Integer-Wert
	    }
	    System.out.print("Ausgewaehltes Wort: #"+wordseek);  // Statusbericht
	    f.seek(0);      // Position auf Dateianfang setzen
	    wordcount=0;    // Wieder auf NULL

	    while ((stmp=f.readLine())!=null) {   // und das ganze von vorne
		if (stmp.charAt(0) != '#') {
		    wordcount++;
		    if (wordcount==wordseek) {     // wenn an der Position, die wir suchen ...
			myword=stmp;               // setze myword auf gerade gelesenen String
			break;                    
		    }
		}
	    }
	    f.close();         // Datei wieder schließen
	}
	 bar = new JMenu();
     datei = new JMenu("Datei");
     info = new JMenu("Info");
     nochmal = new JMenuItem("Neu starten");
     beenden = new JMenuItem("Beenden");
     spielregeln = new JMenuItem("Hilfe");
     text = new JLabel("Diese Anwendung demonstriert die Verwendung von Menüs");   
     setJMenuBar(bar);   
     bar.add(datei);
     bar.add(info);   
     datei.add(nochmal);
     datei.add(beenden);    
     info.add(spielregeln);
     getContentPane().add(text);
     beenden.addActionListener(this);
     nochmal.addActionListener(this);
     spielregeln.addActionListener(this);
     
     setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    public void actionPerformed(ActionEvent evt) {
       
       if (evt.getSource() == nochmal) {
          System.out.println("Neu starten");
       }
       else if (evt.getSource() == beenden) {
          System.exit(0);
       }
       else if (evt.getSource() == spielregeln) {
          System.out.println("Spielregeln");
       }
    }
   
    public static void main(String[] args) {
       
       Hangman test = new Hangman();
       test.pack();
       test.setVisible(true);
    }
 
Funktioniert es jetzt oder nicht?

Du solltest die Menubar nicht dem Panel sondern dem Fenster adden.

Code:
frame.setJMenuBar()

MFG

zEriX
 
also das mit der menüleiste hab ich jetzt soweit hinbekommen. Allerdings tut sich jetzt das nächste problem auf. seitdem ich die menüleiste jetzt mit swing gemacht habe krieg ich beim auslesen der HANGMAN.DAT datei mit dem RandomAccessFile immer die fehlermeldung er kann die daten nicht lesen. das problem ist, ich weis nicht wo ich jetzt nach dem fehler suchen soll weil eigentlich hab ich beim randomaccessfile nichts verändert. Der compiler selbst gibt mir auch keine fehlermeldung aus.

Code:
public class Hangman extends JFrame implements ActionListener {
     
   private static final long serialVersionUID = 1L;
   // Globale Variablen
   final static int WND_B=435, WND_H=360;
   final int SX=50, SY=50;
   RandomAccessFile file;
   String myword=null;  // das zu erratene wort
   char xyword[];        // das ungelöste Wort
   char probed[];
   char notprobed[];
   char alphab[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N',
                  'O','P','Q','R','S','T','U','V','W','X','Y','Z',
                  'Ä','Ö','Ü','ß'};
      
   int mistakes=0;  // Anzahl der Fehler
   int tries=0;     // Anzahl der Versuche
   KL CONTROL;
   char c;
   private JMenu bar = null;
   private JMenu datei = null;
   private JMenu info = null;
   private JMenuItem nochmal = null;
   private JMenuItem beenden = null;
   private JMenuItem spielregeln = null;
   private JLabel text = null;

   public Hangman() {  // Hauptroutine
      String stmp=new String();
        try {
           int wordcount=0;           // neuer Integer für Wörterzahl
           int wordseek=0;            // ~ für Zielwort-Position
           RandomAccessFile f=new RandomAccessFile("hangman.dat","r");
           
           // solange das, was wir
         // lesen, noch sichtbar ist
           while ((stmp=f.readLine())!=null) {

              // und wenn kein '#' am anfang steht
              if (stmp.charAt(0) != '#') {     
                 wordcount++;                  // zähle es als Wort
              }
     
              if (wordcount==0) {
                 System.out.println("ACHTUNG! In der Datendatei sind keine gültigen Wörter zu finden.");
                 System.exit(0);
              }
              
              System.out.println("Woerter in Datendatei: "+wordcount);  // Statusbericht
                while (wordseek==0) {   
               // hol' Dir einen Integer-Wert
               wordseek=(int)(Math.random()*wordcount)+1; 
            }

                System.out.print("Ausgewaehltes Wort: #"+wordseek);  // Statusbericht
                f.seek(0);      // Position auf Dateianfang setzen
                wordcount=0;    // Wieder auf NULL

                // und das ganze von vorne
                while ((stmp=f.readLine())!=null) {   
                   if (stmp.charAt(0) != '#') {
                      wordcount++;
                      
                      if (wordcount==wordseek) {     
                         // setze myword auf gerade gelesenen String
                         myword=stmp;               
                         break;                   
                      }
                   }
                }
                f.close();         // Datei wieder schließen
                     
                     
           }
         

        }catch (IOException e){
           e.printStackTrace();
        }
                     
        bar = new JMenu();
        datei = new JMenu("Datei");
        info = new JMenu("Info");
        nochmal = new JMenuItem("Neu starten");
        beenden = new JMenuItem("Beenden");
        spielregeln = new JMenuItem("Hilfe");
        text = new JLabel("Diese Anwendung demonstriert die Verwendung von Menüs");   
                     
        JMenuBar menubar = new JMenuBar();
        menubar.add(bar);
                     
        setJMenuBar(menubar);
        bar.add(datei);
        bar.add(info);   
        datei.add(nochmal);
        datei.add(beenden);   
        info.add(spielregeln);
        getContentPane().add(text);
        beenden.addActionListener(this);
        nochmal.addActionListener(this);
        spielregeln.addActionListener(this);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        KeyListener control=new KL();
        addKeyListener(control);
       
        xyword=new char[myword.length()];      // array erstellen
        // array initialisieren
        for (int i=0;i<myword.length();i++) {
           xyword[i]='_';
        }   
       
        // array erstellen
        probed=new char[alphab.length];
        notprobed=new char[alphab.length];
       
        // array initialisieren
        for (int i=0;i<alphab.length;i++) {           
           probed[i]='-';
           notprobed[i]=alphab[i];
        }
                   
   }
   
   public void actionPerformed(ActionEvent evt) {
      if (evt.getSource() == nochmal) {
         System.out.println("Neu starten");
      } else if (evt.getSource() == beenden) {
         System.exit(0);
      } else if (evt.getSource() == spielregeln) {
         System.out.println("Spielregeln");
      }
   }
   
   public static void main(String[] args) {
      Hangman test = new Hangman();
      test.pack();
      test.setVisible(true);
   }
         
   public void update(Graphics g) {
      paint(g);
   }
             
   public void paint(Graphics g) {     
      // die Grafiken
       Toolkit tk=Toolkit.getDefaultToolkit();
       // g.drawString("Datensaetze: "+maxdat,40,350);
       // g.drawString("Wort: "+myword,40,200);
       // g.drawString("Zeichen: "+c,40,230);
       g.setColor(Color.black);           // Farbe auf Weiß
       g.fillRect(0,0,WND_B,WND_H);       // Fenster Weiß machen
       g.drawImage(tk.getImage("images/bg.gif"),1,1,this);
       g.drawString("Wort: "+new String(xyword),40,215);
       if (mistakes!=-1) {
          g.drawString("Buchstaben: ",40,260);
          for (int i=0;i<alphab.length;i++) {
             g.drawChars(probed,i,1,118+i*8,260);
             g.drawChars(notprobed,i,1,118+i*8,275);
          }
          g.drawString("Fehler: "+mistakes,40,230);
       }
       UpdateHangMan(g);    // Hangman updaten
   }

   public void UpdateHangMan(Graphics g) {
      Toolkit tk=Toolkit.getDefaultToolkit(); // Toolkit (für
                                    // Grafikdatei-Support)
                                    // zuweisen
      switch(mistakes) {
      // CASE mistakes of ...
           case 6:
              g.drawImage(tk.getImage("images/hm6.gif"),SX,SY,this);
              g.setColor(Color.red);
              g.drawString(">>> VERLOREN <<<",WND_B/2-70,WND_H/2+10);
              g.setColor(Color.white);
              g.drawString("Das gesuchte Wort war '"+myword+"'!",WND_B/4-100,WND_H/2-10);
              removeKeyListener(CONTROL);   // Tastenkontrolle abschalten
               break;
           case 5:
              g.drawImage(tk.getImage("images/hm5.gif"),SX,SY,this);
              break;
           case 4:
              g.drawImage(tk.getImage("images/hm4.gif"),SX,SY,this);
              break;
           case 3:
              g.drawImage(tk.getImage("images/hm3.gif"),SX,SY,this);
              break;
           case 2:
              g.drawImage(tk.getImage("images/hm2.gif"),SX,SY,this);
              break;
           case 1:
              g.drawImage(tk.getImage("images/hm1.gif"),SX,SY,this);
              break;
           case 0:
              g.drawImage(tk.getImage("images/hm0.gif"),SX,SY,this);
              break;
           case -1:
              g.drawImage(tk.getImage("images/hm.gif"),SX,SY,this);
              g.setColor(Color.green);
              g.drawString(">>> GEWONNEN <<<",WND_B/2-70,WND_H/2+10);
              removeKeyListener(CONTROL);
              break;
      }
   }

   class KL implements KeyListener {
      
      public void keyPressed(KeyEvent e) {
         
      }
      
      public void keyReleased(KeyEvent e) {
         
      }
      
      public void keyTyped(KeyEvent e) {
         c=e.getKeyChar();              // Taste holen
         c=Character.toUpperCase(c);    // Buchstabe(?) evtl.
                                          // GROß machen
         int i;                       
         boolean status=false;        // Booleans
         boolean check=false;         // für versch.
                                          // Status-Werte
         for (i=0;i<alphab.length;i++) {
            if (c==alphab[i]) { // wenn c = einer der
                           // Buchstaben des Alphabets
                           // ist ...
               
               //    und der noch nicht vorher getippt wurde, dann ...
               // u.s.w.
               if (probed[i]!=c)
                  probed[i]=c;
               else
                  check=true; 
               if (notprobed[i]==c)
                  notprobed[i]='-';
            }
         }
         // Integer für Anzahl der "_" im bisherigen Wort
         int underscores=0;           
         
         for (i=0;i<myword.length();i++) {
            if (c==Character.toUpperCase(myword.charAt(i))) {
               xyword[i]=myword.charAt(i);
               status=true;
            }
            
            if (xyword[i]=='_')
               underscores++;
         }
         
         // wenn der Buchstabe Falsch ist und nicht schon einmal
         // getippt wurde mistakes+1
         if (!status && !check)
            mistakes++;

         // solange kein doppelter Tip:
         // tries+1;
         if (!check)
            tries++;   

         if (underscores==0 || mistakes>=6) {
            System.out.println(" ("+myword+")");
            System.out.println("Anzahl Versuche: "+tries+"    davon falsch: "+mistakes);
            System.out.println("Getippte Buchstaben: "+new String(probed));
            System.out.println("Anzahl versch. Buchstaben im Wort: "+(tries-mistakes));
            System.out.println("Trefferquote: "+(((tries-mistakes)*100)/tries)+"%");
         }
         
         // wenn keine fehlenden Zeichen im Lösungswort ...
         if (underscores==0)
            mistakes=-1;   

         // wenn mehr als 5 Fehler gemacht wurden
         if (mistakes>=6)
            mistakes=6;       
      
         repaint();        // Grafikfenster neuzeichnen
      }
   }
}
 
Kannst du die Fehlermeldung mal posten? Das die Fehlermeldung kommt hat sicher nichts mit der Umstellung auf Swing zu tun.


MFG

zEriX
 
Ausgewaehltes Wort: #1IOException: java.io.IOException: Read error

Fehler beim Bearbeiten der Datendatei. Stellen Sie sicher, daß die Datei HANGMAN.DAT auch existiert und lesbar ist.
 

Neue Beiträge

Zurück