Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Was hab ich bei diesem Programm falsch gemacht? Das Programm sollte bei jedem Tastendruck "System.exit(0);" ausführen. Bitte um eure hilfe. :shock: :shock: :shock:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class Awt extends JFrame {
JButton stopButton = new JButton();
JPanel spiel = new JPanel();
public Awt(){
super("awt");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout( null );
getContentPane().addKeyListener(new Tasten());
spiel.setBounds(29, 48, 600, 450);
getContentPane().add(spiel);
stopButton.setBounds(55, 131, 162, 43);
spiel.setLayout( null );
setResizable(false);
setLocation(100,100);
setSize(904,523);
setVisible(true);
}
public static void main( String[] args){
Awt test = new Awt();
}
class Tasten extends KeyAdapter{
public void keyPressed(KeyEvent e){
System.exit(0);
}
public void keyReleased(KeyEvent e) {
System.exit(0);
}
public void keyTyped(KeyEvent e) {
System.exit(0);
}
}
}
parent ist eigentlich das this(bei mir ein JFrame), es muss als Instanzvariable gespeichert sein, damit es in der anonymen Klasse sichtbar ist.
Code:
// Overall KeyListener für F1
parent = this;
InputMap im = this.getRootPane()
/* oder this.getLayerdPane() */.getInputMap(
JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = this.getRootPane()
/* oder this.getLayerdPane() */.getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "help");
am.put("help", new AbstractAction() {
public void actionPerformed(ActionEvent ev) {
JOptionPane.showMessageDialog(parent, "Anzeigen der Hilfe");
}
});
getbutton() liefert einen int wert zurueck mit dem man die gedrueckte maustaste auslesen kann,
linke taste liefert den wert 1, mittlere 2 und rechte eben 3...
axo, da hab ich wohl ausversehen was rausgeloescht...
sollte eigentlich button==3 und beim unteren button==1 heissen...
SRY
Das stimmt nicht ganz, JFrame.this liefert die Instanz der Klasse, die die anonyme Klasse enthält. So kann man also praktisch aus der inneren Klasse "rauskommen" ohne sie mit ner Variable referenzieren zu müssen...