Einfaches Menü erstellen

Status
Nicht offen für weitere Antworten.

moe_joe

Aktives Mitglied
Ich habe vor für mein Hangman-programm ein einfaches menü zu erstellen mit folgenden auswahlmöglichkeiten:

Datei
-Spiel neu starten
-Beenden
Hilfe
-Spielregeln

Da ich grade erst mit java anfang wollt ich mal fragen wie ich das am besten realisieren könnte.

mfg moe_joe
 

moe_joe

Aktives Mitglied
heir das bsp da sich gefunden habe, wollte es eigentlich ind er art realisieren

Code:
  public Fenster()
  {
     MenuBar hauptMenue = new MenuBar();
     Menu menue1 = new Menu("datei");
     Menu menue2 = new Menu("hilfe");
     menue1.add("Spiel neu starten");
     menue1.add("Beenden");
     menue2.add("Spielregeln");
     hauptMenue.add(menue1);
     hauptMenue.setHelpMenu(menue2);
     setMenuBar(hauptMenue);
     menue1.addActionListener(this);
     addWindowListener(this);
   }

  public void actionPerformed(ActionEvent evt)
  {
     if (evt.getSource() instanceof MenuItem)
    {
       String menuAdd = evt.getActionCommand();
       if (menuAdd == "beenden") System.exit(0);
     }
   }

  public void windowClosing(WindowEvent evt)
  {
     System.exit(0);
   }

  public void windowOpened(WindowEvent evt){}
  public void windowIconified(WindowEvent evt){}
  public void windowDeiconified(WindowEvent evt){}
  public void windowClosed(WindowEvent evt){}
  public void windowActivated(WindowEvent evt){}
  public void windowDeactivated(WindowEvent evt){}
}
 

moe_joe

Aktives Mitglied
ich hab gegoogelt, hab auch nen menü gefunden, aber mein problem ist es in das vorhandene programm ein zu bauen. so und dann dachte ich mir stellst doch mal die"annfänger frage" immerhin heißt das subforum ja auch "Anfängerfragen". irre ich mich da?!
 

@x.l

Bekanntes Mitglied
1. Poste bitte nur den relevanten Code!
2. Stelle deine Frage konkreter ("Warum funktioniert es nicht?" Ist extrem schwammig... Zeigt es kein Menü an? Meldet der Compiler nen Fehler? Funktioniert das Menü nicht? Fehlen Einträge?, ...
 

The_S

Top Contributor
3.) Gewöhn dir mal n ordentliches Klassendesign an. Ist ja schrecklich!
4.) Ein KSKB kann auch nie Schaden!
 

moe_joe

Aktives Mitglied
1. ich werd's versuchen
2. ist aber nicht so einfach konkrete fragen zu stellen wenn man garnich weis warum es nicht funktioniert.
3. musst du damit arbeiten?! -> Nein! also kann es dir doch eigentlich egal sein wie das klassendesign ist. ich leg da noch nciht so nen wert drauf, bin überhaupt ersmal froh wenn das programm ohne fehler läuft und das ist ja auhc das ziel welche sich erreichen möchte.
4. wäre schön wenn du das auch mal auf deutsch schreiben könntest(KSKB?!?!)

seit ca. 2 wochen befasse ich mich jetzt auf der arbeit mit java(ausbildung als fachinformatiker). ist aber echt blöde wenn der chef zu dir kommt sagt programmier jetzt mal das und das mit java zum üben, aber keine zeit hat um dir die grundlegenden sachen von java zu erklären. das heißt viele tutorials lesen um die ganzen klassen zu verstehen usw. ganz ehrlich was würdet ihr denn machen?
 

The_S

Top Contributor
moe_joe hat gesagt.:
1. ich werd's versuchen

Und wo ist der Versuch?

moe_joe hat gesagt.:
2. ist aber nicht so einfach konkrete fragen zu stellen wenn man garnich weis warum es nicht funktioniert.

Debuggen, Programm Stück für Stück aufbauen und überprüfen ab wann der Fehler auftritt. Außerdem wollten wir eher wissen "was" nicht funktioniert. Z. B.:

- Code lässt sich nicht kompilieren
- Code lässt sich nicht ausführen
- Es erscheint kein Menü
- Es wird eine Exception geworfen (wenn ja welche)
- ...

Dass du die Fehlerursache nicht kennst, sollte klar sein, sonst würdest du ja wohl nicht fragen ;) .

moe_joe hat gesagt.:
3. musst du damit arbeiten?! -> Nein! also kann es dir doch eigentlich egal sein wie das klassendesign ist.

Nee, aber ich bin der Depp, der deinen Code lesen muss ...

moe_joe hat gesagt.:
4. wäre schön wenn du das auch mal auf deutsch schreiben könntest(KSKB?!?!)

Kleines, Selbstkompilierendes Beispiel (oder so ähnlich). Den Begriff hat André Uhres hier mal aufgebracht. Auch hier hätte dir die Forensuche mal wieder weitergeholfen! Dreht sich um ein Programm, dass so wenige Zeilen wie möglich hat und bei dem dann genau dein Fehler nachzuvollziehen ist.

moe_joe hat gesagt.:
seit ca. 2 wochen befasse ich mich jetzt auf der arbeit mit java(ausbildung als fachinformatiker). ist aber echt blöde wenn der chef zu dir kommt sagt programmier jetzt mal das und das mit java zum üben, aber keine zeit hat um dir die grundlegenden sachen von java zu erklären. das heißt viele tutorials lesen um die ganzen klassen zu verstehen usw. ganz ehrlich was würdet ihr denn machen?

Und da beschwerst du dich? Auch ich habe vor 3 Jahren meine Ausbildung zum Fachinformatiker begonnen. Mir wurde aber ein Buch (von 2001 (!), also hoffnunglsos veraltet) von Java hingelegt, welches ich lesen sollte. Danach hab ich keine Aufgaben, gar nix mehr bekommen. Ich musste mir also Java komplett selbst beibringen. Ohne Erklärer, ohne konkrete Aufgaben, ohne Ahnung! Bis ich nach 2 Jahren endlich mal soetwas wie Aufgaben von meinem Chef bekommen habe. Und jetzt habe ich im Juli meine Ausbildung beendet, wurde übernommen und betreue selbst unseren neuen Azubi.

Es ist vollkommen normal, dass du keinen Privatlehrer hast, der dir Grundlegendes erklärt. Das musst du dir selbst beibringen/erlesen - Willkommen im Berufsleben!
 

moe_joe

Aktives Mitglied
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:
 final JFrame f = frame;
        	        JMenuBar menuBar = new JMenuBar();
        	        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); 
        	            }
        	      });
        	       
        	        buttonPanel.add(button1);
        	        buttonPanel.add(button2);    	       
        	        frame.add(buttonPanel,BorderLayout.SOUTH); 	       
        	        Hangman panel = new Hangman();
        	        frame.add(panel,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
        	        frame.setMenuBar(null);
        	        panel.requestFocusInWindow();
        	        {
        	            MenuBar hauptMenue = new MenuBar();
        	            Menu menue1 = new Menu("datei");
        	            Menu menue2 = new Menu("hilfe");
        	            menue1.add("Spiel neu starten");
        	            menue1.add("Beenden");
        	            menue2.add("Spielregeln");
        	            hauptMenue.add(menue1);
        	            hauptMenue.setHelpMenu(menue2);
        	            setMenuBar(hauptMenue);
        	            menue1.addActionListener(null);
        	            addWindowListener();}
        	          } 
        	        private static void setMenuBar(MenuBar hauptMenue) {

		
	}
					private static void addWindowListener() {

		
	}
					public void actionPerformed(ActionEvent evt)
        	        {
        	           if (evt.getSource() instanceof MenuItem)
        	          {
        	             String menuAdd = evt.getActionCommand();
        	             if (menuAdd == "beenden") System.exit(0);
        	           }
        	         }
	public static void main(String args[]) {
    	   initializeNewWindow();
    	    } 
}
 
M

metaltiffy

Gast
schreibt mal in der Funktion, in der du dein shell hast


shell.setMenuBar(menuBar);

Das scheint bei dir zu fehlen..
 

The_S

Top Contributor
1.) Nicht AWT und Swing mischen (du verwendest Button und JFrame, JMenu, ...)
2.) Warum ist das Frame final?
3.) Warum sind die ganzen Buttons und MenuItems etc. keine Klassenvariablen?
4.) In welcher Methode befinden wir uns eigentlich gerade? Im Konstruktor?
5.) Was sollen die geschweiften Klammern um dem Block, der das Menu initiaisiert?
6.) Warum verwendest du so oft static, obwohl du es nicht verwenden musst/sollst?
 

L-ectron-X

Gesperrter Benutzer
Stimmt, das ist etwas irritierend.

Mit shell ist hier aber offenbar der Frame/Dialog gemeint, der die Menüzeile erhalten soll.
Wenn du mit Swing arbeitest, muss diese Zeile übrigens anders heißen:
Code:
myJFrame.setJMenuBar(jMenuBar);
 

metaltiffy

Mitglied
Shell ist, glaub ich nur bei swt....
du solltest deine Code strukturierter machen...

so ruft man das auf
Code:
 ublic class DBTool {

	
	protected Shell dbShell;
	Display toolDisplay;
	static DBTool dbTool;
	static DBMonitoring moniWindow;

	public static void main(String[] args) {
		try {
			dbTool = new DBTool();
			dbTool.open();
		} catch (Exception ex) {
			System.out.println("Fehler in main");
			ex.printStackTrace();
		}
	}

	public void open() {
		toolDisplay = Display.getDefault();
		createContents();
		dbShell.open();
		dbShell.layout();
		while (!dbShell.isDisposed()) {
			if (!toolDisplay.readAndDispatch())
				toolDisplay.sleep();
		}
	}
	
	public void createContents(){

//hier den ganzen gui-kram reinschreiben...

}

musst natürlich noch den klassennamen anpassen
In dem fall würde das shell.setMenu in die funktion open kommen
 

moe_joe

Aktives Mitglied
irgendwie scheint JMenuBar aber noch nicht richtig vereinbart zu sein, kriege die meldung JMenuBar cannot be resolved
 

The_S

Top Contributor
statt jMenuBar musst du natürlich auch den Namen schreiben, den du deiner JMenuBar gegeben hast. Außerdem muss JMenuBar natürlich importiert sein.
 

moe_joe

Aktives Mitglied
also der sacht mir jetzt
Cannot make a static reference to the non-static method setMenuBar(MenuBar) from the type Frame
 

The_S

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
1.) Nicht AWT und Swing mischen (du verwendest Button und JFrame, JMenu, ...)
2.) Warum ist das Frame final?
3.) Warum sind die ganzen Buttons und MenuItems etc. keine Klassenvariablen?
4.) In welcher Methode befinden wir uns eigentlich gerade? Im Konstruktor?
5.) Was sollen die geschweiften Klammern um dem Block, der das Menu initiaisiert?
6.) Warum verwendest du so oft static, obwohl du es nicht verwenden musst/sollst?

Beantworte mir die Fragen. Dann erledigt sich auch dein Problem. Wenn dud ie Fragen nicht beantworten kannst, solltest du dir dringend nochmal dein Anfängerbuch ansehen! Ansonsten hat das alles hier keinen Sinn!
 

FenchelT

Bekanntes Mitglied
moe_joe hat gesagt.:
also der sacht mir jetzt
Cannot make a static reference to the non-static method setMenuBar(MenuBar) from the type Frame

Hallo moe_joe,

ohne Dir zu Nahe treten zu wollen, goenn Dir ein gutes Buch und lies Dir mal die Basics durch.
Auch wenn der Chef sagt "..mach mal.." (ist ja leider immer der Chef :wink: ) so bringt Dich das auf Dauer auch nicht weiter.

Du wirst bei den naechsten Aufgaben wieder vor den gleichen Problemen stehen und die gleichen Fragen fragen, wenn Du die Basics nicht richtig verstanden hast und damit meine ich in erster Linie:

- Klassen-
- Methoden
- Objektorietierung im allgemeinen und in Java im Speziellen
- Modifier
- Datentypen in Java


Alles andere ist Flickwerk


Just my 2 Cent
 

moe_joe

Aktives Mitglied
1.) Nicht AWT und Swing mischen (du verwendest Button und JFrame, JMenu, ...)
bin ja dabei alles auf swing umzubauen

2.) Warum ist das Frame final?
das frame is final, weil ich sonst probleme mit f.dispose bekomme

3.Warum sind die ganzen Buttons und MenuItems etc. keine Klassenvariablen?
weil ich es anders noch nicht anders hinbekommen habe und es funktioniert ja

4.) In welcher Methode befinden wir uns eigentlich gerade? Im Konstruktor?
da bin ich überfragt^^

5.) Was sollen die geschweiften Klammern um dem Block, der das Menu initiaisiert?
weil ich das so in nem tutorial gefunden habe

6.) Warum verwendest du so oft static, obwohl du es nicht verwenden musst/sollst?
das programm funktioniert doch! das für mich ersma die hauptsache. ob mit oder ohne static

so fragen beantwortet? :wink:
 

moe_joe

Aktives Mitglied
kannst dir sparen die arbeit, habs selber hingekriegt. er zeigt mir jetzt das menü an so wie ich es haben wollte. Muss jetzt nur noch festenlegen was bei welcher aktion passieren soll
 

The_S

Top Contributor
Das wird auch von diesem KSKB demonstriert ;)

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MenuTest extends JFrame implements ActionListener {

	private JMenuBar bar = null;
	
	private JMenu datei = null;
	private JMenu info = null;
	private JMenu sub = null;
	
	private JMenuItem doSomething = null;
	private JMenuItem exit = null;
	private JMenuItem help = null;
	private JMenuItem about = null;

	private JLabel text = null;


    public MenuTest() {
    	
    	setTitle("Menu-Test");
    	
    	bar = new JMenuBar();
    	
    	datei = new JMenu("Datei");
    	info = new JMenu("Info");
    	sub = new JMenu("Sub-Menü");
    	
    	doSomething = new JMenuItem("Mach Was");
    	exit = new JMenuItem("Beenden");
    	help = new JMenuItem("Hilfe");
    	about = new JMenuItem("Info");
    	
    	text = new JLabel("Diese Anwendung demonstriert die Verwendung von Menüs");
    	
    	setJMenuBar(bar);
    	
    	bar.add(datei);
    	bar.add(info);
    	
    	datei.add(sub);
    	datei.add(exit);
    	
    	info.add(help);
    	info.add(about);
    	
    	sub.add(doSomething);
    	
    	getContentPane().add(text);
    	
    	exit.addActionListener(this);
    	doSomething.addActionListener(this);
    	help.addActionListener(this);
    	about.addActionListener(this);
    	
    	setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    public void actionPerformed(ActionEvent evt) {
    	
    	if (evt.getSource() == doSomething) {
    		System.out.println("Mach Was");
    	}
    	else if (evt.getSource() == exit) {
    		System.exit(0);
    	}
    	else if (evt.getSource() == about) {
    		System.out.println("Programm erstellt von mir");
    	}
    	else if (evt.getSource() == help) {
    		System.out.println("Das Programm ist hilflos");
    	}
    }
    
    public static void main(String[] args) {
    	
    	MenuTest test = new MenuTest();
    	test.pack();
    	test.setVisible(true);
    }
}
 

moe_joe

Aktives Mitglied
so, das hast du ja jetzt mit swing gemacht. hab das grad mal eben probiert auf mein programm anzuwenden aber da bekomme ich jetzt wieder einige fehler.

Code:
	public static void main(String args[]) {
	       MenuTest test = new MenuTest();
	       test.pack();
	       test.setVisible(true); 
    	   initializeNewWindow();
hier hat er nen problem pack is undefinied for the typ hangman"

Code:
    getContentPane().add(text);
    
    Beenden.addActionListener((ActionListener) this);
    Spielregeln.addActionListener((ActionListener) this);
    Nochmal.addActionListener((ActionListener) this);
    
    setDefaultCloseOperation(EXIT_ON_CLOSE);
hier das problem "getcontentPane().add(text) is undefinied for the typ hangman"
und setDefaultCloseOperation(EXIT_ON_CLOSE) cannot be resolved
 
T

tuxedo

Gast
moe_joe hat gesagt.:
seit ca. 2 wochen befasse ich mich jetzt auf der arbeit mit java(ausbildung als fachinformatiker). ist aber echt blöde wenn der chef zu dir kommt sagt programmier jetzt mal das und das mit java zum üben, aber keine zeit hat um dir die grundlegenden sachen von java zu erklären. das heißt viele tutorials lesen um die ganzen klassen zu verstehen usw. ganz ehrlich was würdet ihr denn machen?

Ähm... Wer hat denn gesagt dass die Ausbildung leicht wird? Ein Studium sieht auch nicht viel anders aus: Da steht einer vorne, labert ne menge kryptisches Zeugs und nach einigen Monaten wird eine Klausur geschrieben. Toll. Da ist keiner der einen an die Hand nimmt und sagt: "Guck, das geht so und so"..
Learning by doing. Das heißt lesen, versuchen zu verstehen und da wo's dann hängt Leute aufsuchen die sich mit auskennen. Aber das heißt auch seine Fragen so stellen, dass der Helfende eine Ahnung hat wo er ansetzen muss.

Ich geh ja auch nicht in Werkstatt und sage: Mein Auto geht nicht... Die werden auch Fragen: Was geht denn nicht. Und die werden auch sauer wenn sie dann nach 4 Telefonaten mit dir erfahren dass du einfach den Schlüssel verloren hast und es deshalb nicht geht.

- Alex
 
T

tuxedo

Gast
Nö, aber es hat sich so gelesen als ob du dich innerlich beschwerst dass es so schwer ist ;-)
 

moe_joe

Aktives Mitglied
nene, mir macht das programmieren ja auch spaß, so is es nicht. Habe bloß vorher immer mit C/C++ gearbeitet, und da gibt es ja schon einige unterschiede zu java.
 
T

tuxedo

Gast
moe_joe hat gesagt.:
nene, mir macht das programmieren ja auch spaß, so is es nicht. Habe bloß vorher immer mit C/C++ gearbeitet, und da gibt es ja schon einige unterschiede zu java.

Naja, wenn du C/C++ schon kannst dann müsste Java ja ein leichtes sein. Aber wir wollen ja jetzt keinen Glaubenskrieg bzgl. Java <-> C/C++ anfangen. Also back to topic ;-)
 

moe_joe

Aktives Mitglied
so, nochmla ne frage^^ und zwar kann mir meiner sagen warum der jetzt nen problem hat mit dem "Control" beim keylistener? er sagt mir Severity and Description Path Resource Location Creation Time Id
Syntax error on token "CONTROL", VariableDeclaratorId expected after this token line 119, aber ich vertshe nicht was er damit meint!


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);
    }   
	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 <-----Damit hat der nen Problem!!!!
	addKeyListener(CONTROL);  // hinzufügen                   <-----Damit hat der nen Problem!!!!
	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
    }
 
T

tuxedo

Gast
Hast du das "mal eben" wild zusammenkopiert? Weil da sind n haufen Klammerfehler drin.

In welcher Methode/Klasse befindet sich denn die Zeile 84/85??

Benutzt du eine IDE? Weil der Code ist schon ein wenig krass verstümmelt was die Einrückung betrifft. Eclipse hat alle mühe den Code zu formatieren weil viele Einrückungen mit der "Leertaste" gemacht sind.

- Alex
 

Murray

Top Contributor
Ist CONTROL eine Instanzvariable? Falls nicht, dann fehlt die Deklaration:

Code:
KeyListener CONTROL=new KL(); 
addKeyListener(CONTROL);

Dann sind Variablen in Großbuchstaben etwas ungewöhnlich; besser wäre
Code:
KeyListener control=new KL(); 
addKeyListener( control);
oder gleich
Code:
addKeyListener( new KL());
 
T

tuxedo

Gast
Interessant wäre auch die Klassensignatur der Klasse "KL" ...

- Alex
 

moe_joe

Aktives Mitglied
Dann sind Variablen in Großbuchstaben etwas ungewöhnlich; besser wäre
wusste ich nicht, danke

hier sagt er mir jetzt aber folgenden fehler
Code:
KeyListener control=new KL();
	addKeyListener(control); //control cannot be resolved to a type
 

ms

Top Contributor
KeyListener ist ein Interface, das kannst du nicht mit new so instanzieren.
Du brauchst eine Klasse, die dieses Interface implementiert.

ms
 

moe_joe

Aktives Mitglied
ich hab ja die klasse KL
Code:
                         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;
	    	     }
 

Murray

Top Contributor
ms hat gesagt.:
KeyListener ist ein Interface, das kannst du nicht mit new so instanzieren.
Das versucht doch auch niemand, oder?
ms hat gesagt.:
Du brauchst eine Klasse, die dieses Interface implementiert.
Ich habe mal angenommen, dass KL genau das ist. //EDIT: Ok, ist durch den Post bestätigt


Zur Fehlermeldung: wenn die Zeile darüber ohne Fehler durchgeht, ist das eigentlich Quatsch. Zeig doch bitte mal die genaue Fehlermeldungen mit Zeilennumern und den Sourcecode dazu (mit passenden Zeilennummer).
 

moe_joe

Aktives Mitglied
hier der komplette quellcode (hab mal probiert den ein bisschen strukturierter aufzubauen)
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

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");
    				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) 
    							{    
    								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) 
	    										{     
	    											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);
    					}  
			
    				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);
    					}
    				KeyListener control=new KL();
    				addKeyListener(control);  // hinzufügen                   <-----Damit hat der nen Problem!!!!
    				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);
    									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
    						}
    	}
}

und hier die fehlermeldungen;

The method setJMenuBar(JMenuBar) in the type JFrame is not applicable for the arguments (JMenu) <- line 87
Syntax error, insert "Finally" to complete TryStatement <- line 97
Syntax error, insert "}" to complete Block <- line 97
Syntax error, insert "}" to complete Block <- line 97
Syntax error on token "control", VariableDeclaratorId expected after this token <- line 130
Syntax error on token "catch", Identifier expected <- line 123
Syntax error on token ")", { expected after this token <- line 130
Return type for the method is missing <- line 130
control cannot be resolved to a type <- line 130
 

Murray

Top Contributor
Zuerst musst du mal die Klammerfehler beheben, vorher geht gar nichts.
Code:
public Hangman()
ist ein Konstruktor, also im Prinzipo eine ganz normale Methode. Du kannst nicht innerhalb dieser Methode weitere Methoden deklarieren; die gehören hinter den Konstruktor.
Und ein try-Statement muss mit einem catch- und/oder einem finally-Statement abgeschlossen werden.

Code:
public class Hangman extends JFrame implements ActionListener {

  // ...

  public Hangman() {

    try {
    } catch ( Exception e) { //--- besser: genau angeben, welche Art von Exception man catchen will
      // ...
    }
  }

  public static void main( String[] args){
    // ...
  }

  public void actionPerformed(ActionEvent evt)  {
    // ...
  }

  // weitere Methoden ...  

}
 
M

Michael...

Gast
1. setJMenuBar erwartet eine JMenuBar und kein JMenu
2. die Code-Blöcke ({}) sind wohl etwas durcheinander geraten, dadurch findet der Compiler z.B nicht das entsprechende catch zu dem try
 
T

tuxedo

Gast
Ich habs mal in Eclipse rein gezogen und versucht ein wenig zu formatieren...
Also wenn du schon C/C++ gemacht hast, dann frage ich mich ob du vergessen hast dass es die "Tab" Taste gibt... Einrücken mit der Leerteste ist sowas von uncool ;-)

Ich hab mal ein wenig drin rumgebastelt und die gröbsten schnitzer beseitigt und kommentiert:

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

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");
                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)
                         {   
                            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)
                                     {     
                                        myword=stmp;               // setze
																	// myword
																	// auf
																	// gerade
																	// gelesenen
																	// String
                                        break;                   
                                     }
                               }
                         }
                      f.close();         // Datei wieder schließen
                      
                      
                 } // alex0801: Ende des äußeren Whiles ergänzt...
          
                // alex0801: Ein try brauch auch ein entsprechendes catch
          }catch (IOException e){
          }
                      
                      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");   
                      
                      // alex0801: Hab ich mal eingefügt.. Solltest "bar" in
						// "menu" umbenennen....!
                      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);
                   
                }
   
                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);
	}
         
                // alex0801: Das hier sollte wohl weiter oben stehen? Try-Catch-Blöcke lassen sich nicht Methodenübergreifend nutzen
//                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);
//                   }
                KeyListener control=new KL();
                addKeyListener(control);  // hinzufügen <-----Damit hat der
											// nen Problem!!!!
                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);
	     		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]='-';
	}
}
                         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
                      }
       }
}

Ist noch die Sache mit dem CONTROL-Fehler drin...Da ist irgendwas krass durcheinander... Weil da fehlt eine Methodensignatur... " KeyListener control=new KL();" steht einfach so verlassen im Raum ...

Ich rate dir dringend bei sowas großem einen Editor mit Syntaxhighlighting (Klammerzugeörigkeit etc) oder sogar eine richtige IDE zu benutzen...

- Alex
 

moe_joe

Aktives Mitglied
ja ich weis das mit der tab taste....^^ bin aber auch grad dabei gewesen das ein bischen ordentlicher zu machen, bin da selbst schon garnich mehr durchgestiegen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R OOP Einfaches Programmierbeispiel für Assoziation, Aggregation und Komposition gesucht Java Basics - Anfänger-Themen 10
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
J Einfaches Quadrat auf der Console ausgeben lassen Java Basics - Anfänger-Themen 7
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
L Einfaches Kartenspiel (Spieler Klasse) Java Basics - Anfänger-Themen 14
R Einfaches refresh während runtime Java Basics - Anfänger-Themen 4
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
F Einfaches Threadbeispiel.. Java Basics - Anfänger-Themen 7
S Referentielle Integrität ? (Einfaches Bsp) Java Basics - Anfänger-Themen 2
G Erste Schritte Einfaches Gästebuch erstellen mit Array Java Basics - Anfänger-Themen 7
V Klassen import - einfaches Umleiten auf eigene Klassen? Java Basics - Anfänger-Themen 8
H Erste Schritte Einfaches Programm und GUI zusammen bringen Java Basics - Anfänger-Themen 3
A Android Datenbank gaaanz einfaches Insert geht nicht - warum? Java Basics - Anfänger-Themen 4
B OOP einfaches regex Java Basics - Anfänger-Themen 10
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
S Einfaches Regulaerer Ausdruck Problem Java Basics - Anfänger-Themen 7
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
M Einfaches TicTacToe Programm Java Basics - Anfänger-Themen 19
S einfaches Pokerprogramm Java Basics - Anfänger-Themen 52
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
H einfaches Array -> ']' expected Java Basics - Anfänger-Themen 9
H Webservice - Einfaches Beispiel Java Basics - Anfänger-Themen 2
F Ich raffs nicht! - Wie mache ich ein einfaches Java-window? Java Basics - Anfänger-Themen 54
S Einfaches int Array gibt über System.out.println merkwürden Wert aus Java Basics - Anfänger-Themen 9
K Einfaches Bubblesort Java Basics - Anfänger-Themen 11
O einfaches rechnen mit zahlen Java Basics - Anfänger-Themen 4
H Einfaches Date-parse problem Java Basics - Anfänger-Themen 2
T Array auf einfaches Element umwandeln Java Basics - Anfänger-Themen 8
G einfaches Regex Problem Java Basics - Anfänger-Themen 4
M EInfaches Addieren mit Abbruchbedingung Java Basics - Anfänger-Themen 9
M [Einfaches Beispiel] Problem mit innere Klassen Java Basics - Anfänger-Themen 4
S Einfaches Rechenprogramm Java Basics - Anfänger-Themen 2
G Einfaches Rechenprogramm schreiben! Java Basics - Anfänger-Themen 8
A ausgabe eines arrays - einfaches beispiel Java Basics - Anfänger-Themen 4
D was ist denn nun schon wieder? Einfaches JSP. Java Basics - Anfänger-Themen 6
D Ein einfaches Problem aber ich brauche einen TIP Java Basics - Anfänger-Themen 2
R einfaches Programm, viele Probleme Java Basics - Anfänger-Themen 29
C Einfaches Paint-Programm Java Basics - Anfänger-Themen 9
P Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge Java Basics - Anfänger-Themen 3
F einfaches Menue in einer Textkonsole Java Basics - Anfänger-Themen 4
W einfaches Frame öffnen Java Basics - Anfänger-Themen 2
N Wahrscheinlich ganz einfaches Problem, aber unverständlich! Java Basics - Anfänger-Themen 3
S einfaches script mit Eingabeaufforderung starten (javac) Java Basics - Anfänger-Themen 8
B Einfaches Speichern und Laden in Java? Java Basics - Anfänger-Themen 3
L Einfaches Warten in eine Schleife Java Basics - Anfänger-Themen 9
P einfaches Perl-Skript aufrufen Java Basics - Anfänger-Themen 7
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
B Oberflaecheprog einfaches beispiel (button action listener) Java Basics - Anfänger-Themen 5
N Vermutlich einfaches Problem.. Java Basics - Anfänger-Themen 3
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 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
D Menü soll immer da bleiben - Frames sollen wechseln Java Basics - Anfänger-Themen 3
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
XWing Int erstellen lassen? Java Basics - Anfänger-Themen 11
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben