Hallo,
mich plagt da ein kleines Problem.
Ich verwende in einer UI ein Menü mit Acceleratoren.
Und diese funktionieren leider nicht so wie erhofft.
Durch herum probieren bin ich darauf gestossen, dass es am JTree liegt, welcher ebenfalls in der UI ist.
Probiert doch mal bitte folgenden Codeschnipsel aus.
Der JTree ist erst mal auskommentiert.
Drückt man nun CTRL-C/X/V kommen die entsprechenden Meldungen.
Kommentiert man das Label aus und verwendet statt dessen den Tree,
werden die Acceleratoren blockiert.
Wie kann man dem am geschicktesten aus dem Weg gehen?
Danke im Voraus
Torsten
mich plagt da ein kleines Problem.
Ich verwende in einer UI ein Menü mit Acceleratoren.
Und diese funktionieren leider nicht so wie erhofft.
Durch herum probieren bin ich darauf gestossen, dass es am JTree liegt, welcher ebenfalls in der UI ist.
Probiert doch mal bitte folgenden Codeschnipsel aus.
Der JTree ist erst mal auskommentiert.
Drückt man nun CTRL-C/X/V kommen die entsprechenden Meldungen.
Kommentiert man das Label aus und verwendet statt dessen den Tree,
werden die Acceleratoren blockiert.
Wie kann man dem am geschicktesten aus dem Weg gehen?
Java:
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
public class testMenu extends JFrame {
public testMenu() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("File");
menu.setMnemonic('f');
bar.add(menu);
EditListener l = new EditListener();
JMenuItem exit = new JMenuItem("Exit");
exit.setMnemonic('x');
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Exit performed");
testMenu.this.dispose();
System.exit(0);
}
});
menu.add(exit);
menu = new JMenu("Edit");
menu.setMnemonic('e');
bar.add(menu);
JMenuItem mi;
mi = menu.add(new JMenuItem("Cut", 't'));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));
mi.addActionListener(l);
mi = menu.add(new JMenuItem("Copy", 'c'));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
mi.addActionListener(l);
mi = menu.add(new JMenuItem("Paste", 'p'));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, Event.CTRL_MASK));
mi.addActionListener(l);
setJMenuBar(bar);
getContentPane().add(new JLabel("Test")); // <-- mit Label gehts
//getContentPane().add(new JTree()); // <-- mit Tree gibts Probleme
pack();
setSize(300, 300);
setVisible(true);
}
private class EditListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
}
public static void main(String arg[]) {
new testMenu();
}
}
Danke im Voraus
Torsten