# Funktion aus einer Java Datei in eine andere einbauen



## wusli (18. Jul 2012)

Hallo, ich hab hier 2 Java Dateien/Quellcodes:
1.

```
package Hangman;



import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyListener;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.Desktop;
import java.awt.event.*;
 

public class Hangman extends JFrame   {


	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField buchstabe;
	private JTextField tf_ganz;
	private JPasswordField wort;
	 private Frame f;
	    private TextField tf;
	    
	    
	       

	/**
	 * Launch the application.
	 */
	



	public static void main(String[] args) {
		

		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Hangman frame = new Hangman();
					frame.setVisible(true);
					

				} catch (Exception e) {
					e.printStackTrace();
				}
				
				
			}
		});
	}



	

	public Hangman() {
		
		
		
		
		

		setTitle("Hangman");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 408, 397);
		contentPane = new JPanel();
		contentPane.setBackground(Color.LIGHT_GRAY);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		buchstabe = new JTextField();
		buchstabe.setBounds(207, 23, 86, 20);
		contentPane.add(buchstabe);
		buchstabe.setColumns(1);

		final JLabel imagelabel = new JLabel(new ImageIcon("0.gif"));
		imagelabel.setBackground(Color.LIGHT_GRAY);
		imagelabel.setBounds(10, 132, 204, 213);
		contentPane.add(imagelabel);

		final JTextArea nein = new JTextArea();
		nein.setToolTipText("Buchstaben die nicht vorkommen\r\n");
		nein.setBounds(224, 132, 166, 213);
		contentPane.add(nein);
		


		final JFrame frame = new JFrame();
		

		final StringBuilder gesuchtVerdeckt = new StringBuilder("____");
		final JTextArea ta = new JTextArea();
		ta.setBounds(10, 76, 378, 20);
		contentPane.add(ta);

		JButton pruefen = new JButton("Pr\u00FCfen");
		pruefen.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				String Buchstabe = buchstabe.getText();
				String Wort = wort.getText();
				String Zeichen = nein.getText();
				String word = ta.getText();
				int laenge = Zeichen.length();

				int index = Wort.indexOf(Buchstabe);

				if (index > -1) {
					gesuchtVerdeckt.replace(index, index + 1, Buchstabe);

				}

				else {
					nein.setText(nein.getText() + Buchstabe);

				}

				ta.setText(gesuchtVerdeckt.toString());
				buchstabe.setText("");

				switch (laenge) {
				case 0:
					ImageIcon icon0 = new ImageIcon("1.gif");
					imagelabel.setIcon(icon0);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 1:
					ImageIcon icon1 = new ImageIcon("2.gif");
					imagelabel.setIcon(icon1);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 2:
					ImageIcon icon2 = new ImageIcon("3.gif");
					imagelabel.setIcon(icon2);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 3:
					ImageIcon icon3 = new ImageIcon("4.gif");
					imagelabel.setIcon(icon3);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 4:
					ImageIcon icon4 = new ImageIcon("5.gif");
					imagelabel.setIcon(icon4);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 5:
					ImageIcon icon5 = new ImageIcon("6.gif");
					imagelabel.setIcon(icon5);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 6:
					ImageIcon icon6 = new ImageIcon("7.gif");
					imagelabel.setIcon(icon6);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 7:
					ImageIcon icon7 = new ImageIcon("8.gif");
					imagelabel.setIcon(icon7);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 8:
					ImageIcon icon8 = new ImageIcon("9.gif");
					imagelabel.setIcon(icon8);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 9:
					ImageIcon icon9 = new ImageIcon("10.gif");
					imagelabel.setIcon(icon9);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Verloren",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {

						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText("");
						nein.setText("");
						JLabel imagelabel1 = new JLabel(new ImageIcon("0.gif"));
						imagelabel1.setBounds(10, 95, 216, 250);
						contentPane.add(imagelabel);
						frame.pack();

					} else {
						System.exit(0);
					}
					break;
				}

				if (word.equals(Wort)) {
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Gewonnen",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {
						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText(" ");
						nein.setText("");
						JLabel imagelabel1 = new JLabel(new ImageIcon("0.gif"));
						imagelabel1.setBounds(10, 95, 216, 250);
						contentPane.add(imagelabel);

					} else {
						System.exit(0);
					}
				}

			}

		}

		);
		
	   
	   
		
		
		
		
		pruefen.setBounds(301, 22, 89, 23);
		contentPane.add(pruefen);

		JLabel lblNewLabel = new JLabel("Buchstaben die nicht vorkommen");
		lblNewLabel.setFont(new Font("Arial", Font.BOLD, 11));
		lblNewLabel.setBounds(207, 107, 183, 14);
		contentPane.add(lblNewLabel);

		JButton ganz = new JButton("Ganzes Wort");
		ganz.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String Wort = wort.getText();
				String ganzwort = tf_ganz.getText();
				if (ganzwort.equals(Wort)) {
					ta.setText(ganzwort);
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Gewonnen",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {
						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText("");
						nein.setText("");
						tf_ganz.setText("");
					} else {
						System.exit(0);
					}

				} else {
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Verloren",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {

						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText("");
						nein.setText("");
						tf_ganz.setText("");
						frame.pack();

					} else {
						System.exit(0);
					}
				}
			}
		});
		
	
		
		ganz.setBounds(301, 44, 89, 23);
		contentPane.add(ganz);

		tf_ganz = new JTextField();
		tf_ganz.setBounds(207, 45, 86, 20);
		contentPane.add(tf_ganz);
		tf_ganz.setColumns(10);

		wort = new JPasswordField();
		wort.setBounds(10, 45, 86, 20);
		contentPane.add(wort);

		JButton btnNewButton = new JButton("Hilfe");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Desktop desktop = Desktop.getDesktop();

				try {
					Runtime.getRuntime().exec(
							new String[] {"hh",System.getProperty("user.dir")+ "/hilfe.chm" });
				} catch (Exception oError) {
					// Hier Fehler abfangen
				}
			}

			
		});
		btnNewButton.setBounds(301, 0, 89, 23);
		contentPane.add(btnNewButton);

	}
	 
	}
```

und hier der 2. Quellcode:

```
import java.awt.*;
import java.awt.event.*;

public class KeyListenerTest implements KeyListener {
    private Frame f;
    private TextField tf;
    
    public KeyListenerTest() {
        f = new Frame("Key-Listener-Test");
        tf = new TextField("Label");
    }
    
    public void launchFrame() {
        Label label = new Label("Drücken Sie eine Taste "
                                + "der Tastatur");
        
        // Hinzufügen der Komponenten zum Frame
        f.add(label, BorderLayout.NORTH);
        f.add(tf, BorderLayout.SOUTH);
        
        // Hinzufügen des Listeners
        tf.addKeyListener(this);
        tf.requestFocus();
        
        f.setSize(300, 200);
        f.setVisible(true);
    }
    
    // Implementieren der Methoden des Interfaces KeyListener
    public void keyTyped(KeyEvent e) {}
    
    public void keyPressed(KeyEvent e) {
        
    	if(e.getKeyCode() == e.VK_F1){
        	  try {
    				Runtime.getRuntime().exec(
    						new String[] {"hh",System.getProperty("user.dir")+ "/hilfe.chm" });
    			} catch (Exception oError) {
    				// Hier Fehler abfangen
    			}
          }
    }

    public void keyReleased(KeyEvent e) {}

    public static void main(String args[]) {
        KeyListenerTest keyTest = new KeyListenerTest();
        keyTest.launchFrame();
    }
}
```

und ich wollte fragen, ob mir jemand die Funktion vom 2ten Quellcode, bei F1 wird die Hilfe datei geöffnet, in den ersten Quellcode einbauen kann, irgendwie bekomm ich das nicht hin :/ 

Danke im vorraus


----------



## Michael... (18. Jul 2012)

kopiere doch einfach nur den KeyListener-Anteil aus dem zweiten Code in den ersten und registiere in dort an einem Textfeld "buchstabe" (falls er da hin soll) sowie es im zweiten Code mit dem Textfeld "tf" gemacht wird.


----------



## wusli (18. Jul 2012)

Ich möchte das ja so haben, dass wenn ich F1 drücke, eine Hilfe datei sich öffnet und hab jetzt halt schon total viel versucht, dass ein zubauen, aber erfolglos und dachte mir dann, frag ich einfach hier im Forum nach ob mir da jemand helfen kann, da die Community hier immer super ist


----------



## Michael... (18. Jul 2012)

Was hast Du denn versucht? Was geht dann nicht? Und wie soll's denn funktionieren? (In einem anderen Thread hatte ich ja mal das Thema Key Bindings erwähnt, falls F1 in der gesamten Applikation wirksam sein soll)

Klar kann das hier jetzt einer machen, aber es ist doch fast nur ein Kopieren von der einen Klasse in die andere.
Einen KeyListener an eine JTextField zu hängen, ist ja jetzt auch nicht schwer:
Listening to JTextField Events with an KeyListener : JTextComponentSwingJava Tutorial


----------



## wusli (18. Jul 2012)

Ich hab versucht, das ganze in etwa so zu kopieren wie es im zweiten Quellcode ist, funktioniert nicht.
Der zweite Quellcode funktioniert soweit, ich drücke F1 und die Datei öffnet sich.


> Klar kann das hier jetzt einer machen, aber es ist doch fast nur ein Kopieren von der einen Klasse in die andere.


Das ist ja das Problem, dass bekomm ich irgendwie ja nicht hin .____.


----------



## Michael... (18. Jul 2012)

wusli hat gesagt.:


> Das ist ja das Problem, dass bekomm ich irgendwie ja nicht hin .____.


Das hab ich schon verstanden, aber ich werde es nicht machen. 
Wie schaut denn Dein Versuch aus und was funktioniert nicht. (angefangen von der Listener reagiert nicht bis hin zu der Code kann nicht kompiliert werden)


----------



## Flown (18. Jul 2012)

Du solltest dir mal gedanken machen wie etwas funktioniert und nicht einfach nur kopieren.
Wenn du es versuchst dann poste es auch - es wird dir keiner hinschreiben - damit man dir helfen kann.


----------



## wusli (18. Jul 2012)

Ok, dann hab ich mal ne Frage, im 2. Code ist diese Zeile drin: 
	
	
	
	





```
public void launchFrame() {
        Label label = new Label("Drücken Sie eine Taste "
                                + "der Tastatur");
        
        // Hinzufügen der Komponenten zum Frame
        f.add(label, BorderLayout.NORTH);
        f.add(tf, BorderLayout.SOUTH);
        
        // Hinzufügen des Listeners
        tf.addKeyListener(this);
        tf.requestFocus();
        
        f.setSize(300, 200);
        f.setVisible(true);
    }
```

die habe ich im ersten Code nicht und ich glaub an der liegt es das es nicht funktioniert, an welcher Stelle muss ich das oben einfügen und an welches Stelle muss ich das: 
	
	
	
	





```
KeyListenerTest keyTest = new KeyListenerTest();
        keyTest.launchFrame();
```
einfügen?


----------



## Flown (18. Jul 2012)

Herje wenn niemand ein Posting liest dann wird das so nichts

Du brauchst für deine eigene Klasse: Einen Keylistener, ein Textfeld, den keylistener der zu deinem Textfeld hinzugefügt wird

Wie ich schon vorher sagte: Verstehen, nicht alles ausprobieren ... weil das ist nämlich kompletter nonsens, was du tun willst.


----------



## wusli (18. Jul 2012)

So ich hab jetzt einmal wie gesagt ein KeyListener implementiert, dann habe ich diese funktion: 
	
	
	
	





```
public void keyTyped(KeyEvent e) {}
	    
	    public void keyPressed(KeyEvent e) {
	    	if(e.getKeyCode() == e.VK_F1){
	    	try {
                 Runtime.getRuntime().exec(
                         new String[] {"hh",System.getProperty("user.dir")+ "/hilfe.chm" });
             } catch (Exception oError) {
                 // Hier Fehler abfangen
             }
	    }
	    }
```
 
und dann habe ich dem Textfeld den keylistener zugewiesen:
	
	
	
	





```
public Hangman() {
		
		
		
		
		wort.addKeyListener(this);
		wort.requestFocus();
```
was mache ich falsch?


----------



## Camino (18. Jul 2012)

wusli hat gesagt.:


> was mache ich falsch?



Was gibt es denn für Fehlermeldungen oder was passiert bzw. passiert nicht?


----------



## wusli (18. Jul 2012)

Ja, kommt ne Fehlermeldung

java.lang.NullPointerException
	at Hangman.Hangman.<init>(Hangman.java:95)
	at Hangman.Hangman$1.run(Hangman.java:73)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


----------



## Camino (18. Jul 2012)

wusli hat gesagt.:


> Ja, kommt ne Fehlermeldung
> 
> java.lang.NullPointerException
> at Hangman.Hangman.<init>(Hangman.java:95)



Was diese Fehlermeldung bedeutet, weisst du aber, oder? Und du bekommst ja auch den Ort geliefert, wo der Fehler auftritt. Ansonsten musst du deine umgeschriebene Klasse nochmal komplett hier reinposten. Aus den kleinen Codestücken kann man nicht viel erkennen.


----------



## Michael... (18. Jul 2012)

wusli hat gesagt.:


> Ja, kommt ne Fehlermeldung
> 
> java.lang.NullPointerException
> at Hangman.Hangman.<init>(Hangman.java:95)


In Zeile 95 wird versucht auf ein Objekt zu zugreifen, das nicht initialisiert ist. Mehr kann man ohne den entscheidenden Code nicht sagen.


----------



## wusli (18. Jul 2012)

Hier nochmal der ganze Code..


```
package Hangman;





import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyListener;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.Desktop;
import java.awt.event.*;
 

public class Hangman extends JFrame implements KeyListener   {


	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField buchstabe;
	private JTextField tf_ganz;
	private JPasswordField wort;

	 public void keyTyped(KeyEvent e) {}
	    
	    public void keyPressed(KeyEvent e) {
	    	if(e.getKeyCode() == e.VK_F1){
	    	try {
                 Runtime.getRuntime().exec(
                         new String[] {"hh",System.getProperty("user.dir")+ "/hilfe.chm" });
             } catch (Exception oError) {
                 // Hier Fehler abfangen
             }
	    }
	    }
	 
	    public void keyReleased(KeyEvent e) {}

	    
	       

	/**
	 * Launch the application.
	 */
	



	public static void main(String[] args) {
		

		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Hangman frame = new Hangman();
					frame.setVisible(true);
					

				} catch (Exception e) {
					e.printStackTrace();
				}
				
				
			}
		});
	}



	

	public Hangman()   {
		
		
		
		
		wort.addKeyListener(this);
		wort.requestFocus();

		setTitle("Hangman");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 408, 397);
		contentPane = new JPanel();
		contentPane.setBackground(Color.LIGHT_GRAY);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		buchstabe = new JTextField();
		buchstabe.setBounds(207, 23, 86, 20);
		contentPane.add(buchstabe);
		buchstabe.setColumns(1);

		final JLabel imagelabel = new JLabel(new ImageIcon("0.gif"));
		imagelabel.setBackground(Color.LIGHT_GRAY);
		imagelabel.setBounds(10, 132, 204, 213);
		contentPane.add(imagelabel);

		final JTextArea nein = new JTextArea();
		nein.setToolTipText("Buchstaben die nicht vorkommen\r\n");
		nein.setBounds(224, 132, 166, 213);
		contentPane.add(nein);
		


		final JFrame frame = new JFrame();
		

		final StringBuilder gesuchtVerdeckt = new StringBuilder("____");
		final JTextArea ta = new JTextArea();
		ta.setBounds(10, 76, 378, 20);
		contentPane.add(ta);

		JButton pruefen = new JButton("Pr\u00FCfen");
		pruefen.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				String Buchstabe = buchstabe.getText();
				String Wort = wort.getText();
				String Zeichen = nein.getText();
				String word = ta.getText();
				int laenge = Zeichen.length();

				int index = Wort.indexOf(Buchstabe);

				if (index > -1) {
					gesuchtVerdeckt.replace(index, index + 1, Buchstabe);

				}

				else {
					nein.setText(nein.getText() + Buchstabe);

				}

				ta.setText(gesuchtVerdeckt.toString());
				buchstabe.setText("");

				switch (laenge) {
				case 0:
					ImageIcon icon0 = new ImageIcon("1.gif");
					imagelabel.setIcon(icon0);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 1:
					ImageIcon icon1 = new ImageIcon("2.gif");
					imagelabel.setIcon(icon1);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 2:
					ImageIcon icon2 = new ImageIcon("3.gif");
					imagelabel.setIcon(icon2);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 3:
					ImageIcon icon3 = new ImageIcon("4.gif");
					imagelabel.setIcon(icon3);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 4:
					ImageIcon icon4 = new ImageIcon("5.gif");
					imagelabel.setIcon(icon4);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 5:
					ImageIcon icon5 = new ImageIcon("6.gif");
					imagelabel.setIcon(icon5);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 6:
					ImageIcon icon6 = new ImageIcon("7.gif");
					imagelabel.setIcon(icon6);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 7:
					ImageIcon icon7 = new ImageIcon("8.gif");
					imagelabel.setIcon(icon7);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 8:
					ImageIcon icon8 = new ImageIcon("9.gif");
					imagelabel.setIcon(icon8);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					break;

				case 9:
					ImageIcon icon9 = new ImageIcon("10.gif");
					imagelabel.setIcon(icon9);
					imagelabel.setBounds(10, 95, 216, 250);
					contentPane.add(imagelabel);
					frame.pack();
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Verloren",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {

						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText("");
						nein.setText("");
						JLabel imagelabel1 = new JLabel(new ImageIcon("0.gif"));
						imagelabel1.setBounds(10, 95, 216, 250);
						contentPane.add(imagelabel);
						frame.pack();

					} else {
						System.exit(0);
					}
					break;
				}

				if (word.equals(Wort)) {
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Gewonnen",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {
						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText(" ");
						nein.setText("");
						JLabel imagelabel1 = new JLabel(new ImageIcon("0.gif"));
						imagelabel1.setBounds(10, 95, 216, 250);
						contentPane.add(imagelabel);

					} else {
						System.exit(0);
					}
				}

			}

		}

		);
		
	   
	   
		
		
		
		
		pruefen.setBounds(301, 22, 89, 23);
		contentPane.add(pruefen);

		JLabel lblNewLabel = new JLabel("Buchstaben die nicht vorkommen");
		lblNewLabel.setFont(new Font("Arial", Font.BOLD, 11));
		lblNewLabel.setBounds(207, 107, 183, 14);
		contentPane.add(lblNewLabel);

		JButton ganz = new JButton("Ganzes Wort");
		ganz.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String Wort = wort.getText();
				String ganzwort = tf_ganz.getText();
				if (ganzwort.equals(Wort)) {
					ta.setText(ganzwort);
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Gewonnen",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {
						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText("");
						nein.setText("");
						tf_ganz.setText("");
					} else {
						System.exit(0);
					}

				} else {
					int ok = JOptionPane.showConfirmDialog(null,
							"Neues Spiel?", "Sie haben Verloren",
							JOptionPane.YES_NO_OPTION);
					if (ok == JOptionPane.YES_OPTION) {

						wort.setVisible(true);
						wort.setText("");
						buchstabe.setText("");
						ta.setText("");
						nein.setText("");
						tf_ganz.setText("");
						frame.pack();

					} else {
						System.exit(0);
					}
				}
			}
		});
		
	
		
		ganz.setBounds(301, 44, 89, 23);
		contentPane.add(ganz);

		tf_ganz = new JTextField();
		tf_ganz.setBounds(207, 45, 86, 20);
		contentPane.add(tf_ganz);
		tf_ganz.setColumns(10);

		wort = new JPasswordField();
		wort.setBounds(10, 45, 86, 20);
		contentPane.add(wort);

		final JButton Hilfe = new JButton("Hilfe");
		Hilfe.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Desktop desktop = Desktop.getDesktop();

				try {
					Runtime.getRuntime().exec(
							new String[] {"hh",System.getProperty("user.dir")+ "/hilfe.chm" });
				} catch (Exception oError) {
					// Hier Fehler abfangen
				}
			}

			
		});
		Hilfe.setBounds(301, 0, 89, 23);
		contentPane.add(Hilfe);

	}
	 
	}
```


----------



## Camino (18. Jul 2012)

[JAVA=95]wort.addKeyListener(this);[/code]

Du musst natürlich wort vorher initialisieren, also das Textfeld vorher erzeugen. So greifst du drauf zu, ohne dass es schon exisitiert. Deshalb die NullPointerException.

Das passiert nämlich erst hier:
[JAVA=348]wort = new JPasswordField();[/code]


----------



## Michael... (18. Jul 2012)

Sollte eigentlich offensichtlich sein?
Die Variable "wort" ist nicht initialisiert. Sie ist zwar als JPasswordField deklariert aber nirgends wir ein JPasswordField Objekt erzeugt und der Variablen zugewiesen.


----------



## wusli (18. Jul 2012)

Jetzt spuckt er auch keine Fehlermeldung mehr aus, aber passiert trotzdem nichts, wenn ich auf F1 drücke


----------



## Camino (18. Jul 2012)

Setz mal die zum KeyListener zugehörigen Methoden

```
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
```
nicht oben in die Klasse mit rein, sondern unter den Konstrukturblock.


----------



## wusli (18. Jul 2012)

Wo ist der Konstruktor Block?
Ich komm mir doof vor -.-"


----------



## Michael... (18. Jul 2012)

wusli hat gesagt.:


> Jetzt spuckt er auch keine Fehlermeldung mehr aus, aber passiert trotzdem nichts, wenn ich auf F1 drücke


Hat denn werden des "F1 Drückens" die Komponente word den Fokus? Hast Du die Zeile 348 gelöscht bzw. vor Zeile 95 gezogen? Sonst hast Du den KeyListener an einer Komponente registiert, die gar nicht in der GUI verbaut ist.


----------



## wusli (18. Jul 2012)

Ich hab garnicht dran gedacht, dass word den Fokus haben muss, danke funktioniert


----------



## Camino (18. Jul 2012)

Hmmm, was der Konstruktor ist, solltest du aber wissen. Alles was in dem Block zwischen den geschweiften Klammern steht, das ist der Konstruktor

```
public Hangman()   {
...
...
}
```

Da wo du die Methoden des KeyListeners hingeschrieben hast, kommen die Deklarationen der Variablen der Klasse rein. Verschieb die Methoden mal hinter die schliessende geschweifte Klammer des Konstruktors.


----------



## wusli (18. Jul 2012)

Danke Leute, Ihr seid die besten


----------



## wusli (18. Jul 2012)

> Hmmm, was der Konstruktor ist, solltest du aber wissen. Alles was in dem Block zwischen den geschweiften Klammern steht, das ist der Konstruktor
> Java Code: Quelltext in neuem Fenster öffnen
> 
> 1
> ...



Ja, dass dachte ich mir auch, aber darin hat er Fehlermeldungen gespuckt, dann dachte ich das wäre falsch


----------



## Camino (18. Jul 2012)

wusli hat gesagt.:


> Ich hab garnicht dran gedacht, dass word den Fokus haben muss, danke funktioniert



Ich würde mir auch mal überlegen, die Variablennamen evtl. anders zu benennen, sonst kommst du vielleicht noch mit wort, Wort und word durcheinander...


----------

