[gelöst]Frage und Problem zu Swing

Status
Nicht offen für weitere Antworten.

ModellbahnerTT

Bekanntes Mitglied
Hi @all

Ich habe verschiedene Fragen zu dem Code den ich hier gelistet habe.
Warum geht der KeyHandler nicht?
Wie schaffe ich es das im Menu bei Datei das D unterstrichen ist?

Code:
import java.awt.Container;
import java.awt.Event;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;


public class grafikoberflaeche extends JFrame
{

	public grafikoberflaeche()
	{
		super();
		
		this.setTitle("Herzlich Willkommen zu Swing");
		this.addKeyListener(new KeyHandler());
		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		Container cp = new Container();
		cp.setLayout(new GridLayout(2,1));
		cp.add(new JButton("OK"));
		cp.add(new JButton("Cancel"));
		cp.add(new JButton("Ende"));
		cp.add(new JButton("Anfang"));
		this.setLocation(100, 100);
		this.add(cp);
		this.add(cp);
		JMenuBar jmb = new JMenuBar();
		jmb.add(createMenu());
		setJMenuBar(jmb);
		this.setSize(300, 200);
		this.setVisible(true);
   }
	
	
	private JMenu createMenu()
	{
		JMenu m = new JMenu("Datei");
		m.setMnemonic('D');
		JMenuItem mi = new JMenuItem("Neu", 'N');
		setCtrlAccelerator(mi, 'O');
//		mi.addActionListener(this);
		m.add(mi);
		mi = new JMenuItem("Highscore", 'H');
		setCtrlAccelerator(mi, 'S');
		m.add(mi);
		mi = new JMenuItem("Beenden", 'B');
		setCtrlAccelerator(mi, 'X');
		m.add(mi);
		return m;
	}
	
	
	private void setCtrlAccelerator(JMenuItem mi, char acc)
	{
		KeyStroke ks = KeyStroke.getKeyStroke(acc, Event.CTRL_MASK);
		mi.setAccelerator(ks);
	}
	
	
	class KeyHandler implements KeyListener
	{

		public void keyPressed(KeyEvent arg0)
		{
			char key = arg0.getKeyChar();
			if((arg0.isControlDown())&&(key ==KeyEvent.VK_X))
			{
				System.exit(0);
			}
		}

		public void keyReleased(KeyEvent arg0)
		{
			
		}

		public void keyTyped(KeyEvent arg0)
		{
			
		}
		
	}
	
	
	public static void main(String[] args)
	{

		grafikoberflaeche go =  new grafikoberflaeche();
	}
}

ModellbahnerTT
 
B

Beni

Gast
1. Der KeyListener reagiert nur, wenn die Component bei der er angemeldet ist, den Focus besitzt. Da du aber Buttons und andere Elemente auf deinem Frame hast, wird das Frame selbst den Focus nie besitzen.
Deine erste Idee, einen ActionListener dem JMenuItem hinzuzufügen, sollte aber funktionieren.

2. Bei mir werden die Buchstaben unterstrichen. Liegt vielleicht am Look&Feel (ich habe Metal unter Java 1.6, WinXP).
P.S. laut API solltest du nicht direkt den char übergeben, sondern die VK_XXX verwenden
Code:
m.setMnemonic( KeyEvent.VK_D );

Wenn du schon am ausprobieren bist, guck dir doch auchmal die Klasse "Action", bzw. "AbstractAction" an. Damit kann man Icons, Text, Mnemonics, etc... in ein Objekt packen (und muss das nicht wild verteilen).
 

ModellbahnerTT

Bekanntes Mitglied
Ok deinen Code habe ich gleichmal übernommen. Was ich mit dem KeyListener erreichen wollte ist das egal welches Objekt den Focus hat ich mit ALT + D das Menu Datei aufrufen kann. Das geht so ja leider nicht. Wie könnte es den funktionieren?

PS: Ich verwende Jre 1.4.2. Es sollte aber auch unter Jre 1.5.11 gehen.
 
B

Beni

Gast
Also ich würde das mit einer Action lösen. Das würde dann so aussehen ("Alt + B" aktiviert die Action):
Code:
public class Main{
    public static void main( String[] args ) {
        // Eine Action erstellen
        AbstractAction action = new AbstractAction(){
            public void actionPerformed( ActionEvent e ) {
                System.out.println( "blupp" );
            }
        };
        action.putValue( Action.NAME, "Blupp" );
        // Mit den Tasten verknüpfen
        action.putValue( Action.ACCELERATOR_KEY,
                KeyStroke.getKeyStroke( KeyEvent.VK_B, KeyEvent.ALT_DOWN_MASK ) );
        action.putValue( Action.MNEMONIC_KEY, Integer.valueOf( KeyEvent.VK_B ));
        
        // Frame, Menubar etc. aufbauen
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
        JMenuBar bar = new JMenuBar();
        frame.setJMenuBar( bar );
        
        JMenu menu = new JMenu( "Menu" );
        bar.add( menu );
        
        // Die Action einbauen
        menu.add( action );
        
        frame.pack();
        frame.setVisible( true );
    }
}

Ich habe das mit Java 1.6 geschrieben, aber IMHO sollte das auch mit älteren Version funktionieren...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing [Gelöst]Radiobuttons "Verknüpfen" AWT, Swing, JavaFX & SWT 3
H Puzzle - Erkennen wenn gelöst (array vergleichen) AWT, Swing, JavaFX & SWT 10
Pithecanthropus [gelöst] JTree, aber nicht mit Strings, sondern mit Objects? AWT, Swing, JavaFX & SWT 2
Pithecanthropus [gelöst ]ActionListener soll nur Änderungen "bemerken" AWT, Swing, JavaFX & SWT 2
H [gelöst] Swing Elemente verdecken AWT, Swing, JavaFX & SWT 14
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
H Swing [gelöst]Neues Swing Element erstellen AWT, Swing, JavaFX & SWT 4
J [gelöst] nicht installierte Schrftart nutzen AWT, Swing, JavaFX & SWT 8
M Swing [gelöst] JTable: Edit abstellen AWT, Swing, JavaFX & SWT 3
S Swing [gelöst] GUI-Befehle bleiben wirkungslos, wenn danach was großes gemacht wird. AWT, Swing, JavaFX & SWT 5
S [gelöst] API zum bequemen Navigieren und Auswählen von Ordnern AWT, Swing, JavaFX & SWT 3
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
P [gelöst] Verschiebbare Komponenten mit Linien verbinden AWT, Swing, JavaFX & SWT 2
J [gelöst] repaint problem AWT, Swing, JavaFX & SWT 2
A [gelöst] Grundlagenfehler AWT, Swing, JavaFX & SWT 2
R Gelöst: panelGrösse innerhalb eines JFrames AWT, Swing, JavaFX & SWT 7
M problem mit repaint()-Methode[gelöst] AWT, Swing, JavaFX & SWT 8
G [gelöst] "Größe" von drawString AWT, Swing, JavaFX & SWT 4
T [gelöst] JFrame Grundlagen (Größe und Darstellung) AWT, Swing, JavaFX & SWT 6
E Inhalt einer JComboBox ... -gelöst AWT, Swing, JavaFX & SWT 2
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben