Tastatur-Shortcut klappt nicht

stareck

Aktives Mitglied
Hallo zusammen,

ich habe in meinem Menü-Item "Kopieren" den Shortcut Strg+C hinzufügen.
Java:
mniKopieren.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK ));

Allerdings wird der gesetzte ActionListener nicht angesprochen.
Wenn ich allerdings z.B. anstatt
Java:
KeyEvent.VK_C
Java:
KeyEvent.VK_F2
nehme, wird der Actionlistener über Strg+F2 aufgerufen.
Hat jemand eine Idee woran dies liegen kann?
Oder habe ich eine falsche Konstante genommen?
 
G

Gast2

Gast
Ich denk mal wenn du in einem Textfeld bist wird eben der Shortcut verwendet um in die Zwischenablage zu copieren.
Mach ein kleines KSKB...
 

stareck

Aktives Mitglied
So hier mal ein Beispiel, Strg+F2 klappt, Strg+C nicht...

Java:
import java.awt.event.*;

import javax.swing.*;

public class ShortcutTest extends JFrame
{
  private JList                 lst;
  
  public ShortcutTest()
  {
    String [] items = {"Eins", "Zwei", "Drei"};
    lst = new JList(items);
    this.add(lst);
    
    JMenuBar menuBar = new JMenuBar();

    JMenu mnuBearbeiten = new JMenu("Bearbeiten");
    JMenuItem mniKopieren = new JMenuItem("Kopieren");
    JMenuItem mniTest = new JMenuItem("Test");
    mnuBearbeiten.add(mniKopieren);
    mnuBearbeiten.add(mniTest);
    menuBar.add(mnuBearbeiten);
    this.setJMenuBar(menuBar);
    
    mniKopieren.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK ));
    mniTest.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_F2, InputEvent.CTRL_DOWN_MASK ));
    
    
    mniKopieren.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        System.out.println("Kopieren");
      }
    });
    
    mniTest.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        System.out.println("Strg+F2 klappt");
      }
    });
    
    pack();
    setVisible(true);
  }
  
  public static void main(String[] args)
  {
  new ShortcutTest();
  }
}
 
G

Gast2

Gast
So hier ein Beispiel wos klappt. Oben hab ich schon die Lösung geschrieben warum es in diesem Fall klappt...

Java:
import java.awt.event.*;
 
import javax.swing.*;
 
public class ShortcutTest extends JFrame
{
  
  public ShortcutTest()
  {
    this.add(new JButton("Geht Warum nur?"));
    
    JMenuBar menuBar = new JMenuBar();
 
    JMenu mnuBearbeiten = new JMenu("Bearbeiten");
    JMenuItem mniKopieren = new JMenuItem("Kopieren");
    JMenuItem mniTest = new JMenuItem("Test");
    mnuBearbeiten.add(mniKopieren);
    mnuBearbeiten.add(mniTest);
    menuBar.add(mnuBearbeiten);
    this.setJMenuBar(menuBar);
    
    mniKopieren.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK ));
    mniTest.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_F2, InputEvent.CTRL_DOWN_MASK ));
    
    
    mniKopieren.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        System.out.println("Kopieren");
      }
    });
    
    mniTest.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        System.out.println("Strg+F2 klappt");
      }
    });
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);
  }
  
  public static void main(String[] args)
  {
  new ShortcutTest();
  }
}
 

stareck

Aktives Mitglied
ja stimmt, wenn ich ein Element meiner JList markiere und Strg+C drücke, habe ich dein Namen des Eintrags in der Zwischenablage...

Kann ich dies denn ausschalten?
 
G

Gast2

Gast
Öhm gute Frage^^... Weiß net ob der UIManager da ne Lösung hat, ansonsten weiß nur dass du dir die ActionMap von der Liste oder allg. Komponente holen kannst und den entsprechenden Eintrag rauslöschen kannst.
Aber ich weiß nicht ob das Sinn macht und der User begeistert istm wenn man in einem Textfeld oder Liste nichts mehr in die Zwischenablage (vor WIE GEWOHNT) ablegen kann.

Nimm doch eine Combi die es noch nicht gibt Strg+Alt+C oder sowas...

Also ich also user würde auflippen wenn das Textfeld funktionen wie Strg+A+C+V+X net gehen würden...
 

stareck

Aktives Mitglied
ja ich habe mir einen kleinen Explorer geschrieben, indem ich 2 JList's habe, die linke für die Ordner und die rechte für die Dateien. Wenn ich jetzt einen Ordner oder eine Datei markiere kann ich diese kopieren, allerdings nciht über den Shortcut.

Oder habt ihr einen Tipp für mich, wie ich das sonst realisieren kann.

Die linke JList will ich dann bald auch durch einen JTree ersetzen. Aber da wird das Problem dann ja wahrscheinlich auch auftreten.
 
G

Gast2

Gast
1. Drag and Drop?
2. Aus der Componente den Action rausnehmen
public void unregisterKeyboardAction(KeyStroke aKeyStroke)
public KeyStroke[] getRegisteredKeyStrokes()

Sonst keine Idee grad...
 

stareck

Aktives Mitglied
so ich habe jetzt versucht mit der Methode unregisterKeyboardAction(KeyStroke aKeyStroke)
den Shortcut herauszunehmen und anschließend meinen eigenen hinzugefügt.

Allerdings scheint dies nicht zu funktionieren...
 

stareck

Aktives Mitglied
Hier mal ein kleines Programm..

Java:
import java.awt.event.*;
 
import javax.swing.*;
 
public class ShortcutTest extends JFrame
{
  public ShortcutTest()
  {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    String [] items = {"Eins", "Zwei", "Drei"};
    JList lst = new JList(items);
    lst.unregisterKeyboardAction(KeyStroke.getKeyStroke( KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK ));
        
    this.add(lst);
    
    JMenuBar menuBar = new JMenuBar();
 
    JMenu mnuBearbeiten = new JMenu("Bearbeiten");
    JMenuItem mniKopieren = new JMenuItem("Kopieren");
    mnuBearbeiten.add(mniKopieren);
    menuBar.add(mnuBearbeiten);
    this.setJMenuBar(menuBar);
    
    mniKopieren.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK ));
        
    mniKopieren.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        System.out.println("Kopieren");
      }
    });
    pack();
    setVisible(true);
  }
  
  public static void main(String[] args)
  {
  new ShortcutTest();
  }
}
 

stareck

Aktives Mitglied
Es muss doch möglich sein, den Strg+C Shortcut auf einer JList abzuschalten u neu zu definieren...
Kann mir denn keiner helfen?
 

stareck

Aktives Mitglied
So hab es jetzt alleine hingekriegt, wen es interessiert...

Java:
Action kopierenAction = new AbstractAction() 
    {
      private static final long serialVersionUID = 1L;

      public void actionPerformed(ActionEvent e) 
      {
        System.out.println("Kopieren");
      }
    };
    lst.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK), "kopieren");
    lst.getActionMap().put("kopieren", kopierenAction);
    
    mniKopieren.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        System.out.println("Kopieren");
      }
    });
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Tastatur Shortcut auslösen bei FocusGained-Event AWT, Swing, JavaFX & SWT 2
N Objecte bewegen mit Tastatur AWT, Swing, JavaFX & SWT 5
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
L Swing Tastatur zeichen AWT, Swing, JavaFX & SWT 4
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
G Tastatur abfragen AWT, Swing, JavaFX & SWT 0
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
M Button klicken anstelle der Tastatur AWT, Swing, JavaFX & SWT 2
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
kodela Swing JToggleButton und Tastatur AWT, Swing, JavaFX & SWT 2
J Inaktivität von Maus und Tastatur AWT, Swing, JavaFX & SWT 4
C Swing Änderung der Tastatur-Navigation in einer JTable AWT, Swing, JavaFX & SWT 4
S Tastatur Event auserhalb des fokuses aufnehmen AWT, Swing, JavaFX & SWT 4
vladimir Swing virtuelle Tastatur realisieren AWT, Swing, JavaFX & SWT 3
M Tastatur simulieren AWT, Swing, JavaFX & SWT 20
D Swing JTree Was passiert beim Tippen auf Tastatur. AWT, Swing, JavaFX & SWT 2
B JTree - Kontextmenü per Tastatur öffnen AWT, Swing, JavaFX & SWT 3
B JTable & Tastatur-Shortcuts AWT, Swing, JavaFX & SWT 3
J Auslösung von Aktionen über Tastatur (Netbeans) AWT, Swing, JavaFX & SWT 23
S Virtuelle Tastatur AWT, Swing, JavaFX & SWT 30
M Tastatur komplett sperren? AWT, Swing, JavaFX & SWT 9
T Gleichzeitiges Steuern von 2 Objekten über Tastatur AWT, Swing, JavaFX & SWT 8
I Globale Tastatur-Events abfragen AWT, Swing, JavaFX & SWT 3
N Tastatur Zeichen einlesen ohne sichtbares Fenster AWT, Swing, JavaFX & SWT 8
R Button actions mit Tastatur ausführen AWT, Swing, JavaFX & SWT 6
F JComboBox setEditable( true ) auf Tastatur Events reagieren AWT, Swing, JavaFX & SWT 4
T JFrame mittels Shortcut anzeigen AWT, Swing, JavaFX & SWT 2
K JMenuItem-Shortcut WENN Menüleiste verborgen ist AWT, Swing, JavaFX & SWT 4
F Shortcut zuweisen AWT, Swing, JavaFX & SWT 3
S Ctrl+C Shortcut fuer jedes OS? AWT, Swing, JavaFX & SWT 4
G Problem mit AbstractAction und Shortcut AWT, Swing, JavaFX & SWT 14
M ALT shortcut für JMenuBar deaktivieren AWT, Swing, JavaFX & SWT 3
N Keyboard-Shortcut, der in der ganzen Anwendung funktioniert AWT, Swing, JavaFX & SWT 2
N Keyboard Shortcut AWT, Swing, JavaFX & SWT 6
G JTable-Zeile/Zelle markieren und mir Shortcut in Arbeitsspei AWT, Swing, JavaFX & SWT 3
S Shortcut für Buttons im JDialog? AWT, Swing, JavaFX & SWT 3
T Shortcut für Eintrag aus MenuBar AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
M JavaFX javafx mousedragged klappt nicht AWT, Swing, JavaFX & SWT 2
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
K JTable getValueAt() klappt nicht immer AWT, Swing, JavaFX & SWT 1
Thallius Automatisches Scrollen zum aktiven JTextView klappt nicht AWT, Swing, JavaFX & SWT 2
M Update überschreiben klappt nicht AWT, Swing, JavaFX & SWT 4
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
X JTextField Ausgabe klappt nicht AWT, Swing, JavaFX & SWT 4
D repaint() klappt anders als vorgestellt AWT, Swing, JavaFX & SWT 15
B JScrollPane Horizontal klappt nicht. AWT, Swing, JavaFX & SWT 4
C Button Größe einstellen klappt nicht (setBounds) AWT, Swing, JavaFX & SWT 8
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
L Applet In HTML einbinden klappt einfach nicht AWT, Swing, JavaFX & SWT 5
H Sound abspielen klappt nicht AWT, Swing, JavaFX & SWT 4
P Swing JLabel Text nach Links ausrichten klappt nicht AWT, Swing, JavaFX & SWT 3
L CardLayout - Show klappt nicht AWT, Swing, JavaFX & SWT 7
M Liste mittels SwingWorker füllen klappt nicht AWT, Swing, JavaFX & SWT 10
F JDialog per Button schliessen - klappt nicht AWT, Swing, JavaFX & SWT 4
K AWT Rectangle klappt nicht AWT, Swing, JavaFX & SWT 7
L ArrayList Wert löschen klappt nicht AWT, Swing, JavaFX & SWT 11
Z DeleteRow klappt nicht AWT, Swing, JavaFX & SWT 11
I AWT paint() in MouseEvent aufrufen klappt nicht AWT, Swing, JavaFX & SWT 8
P ScrollPane klappt zusammen beim verkleinern des Frames AWT, Swing, JavaFX & SWT 2
calzone Swing JTable, Werte aktualisieren klappt nicht! AWT, Swing, JavaFX & SWT 7
Y JComboBox klappt nicht auf AWT, Swing, JavaFX & SWT 3
B JButton setPreferredSize() klappt nicht AWT, Swing, JavaFX & SWT 6
B Buttongröße ändern klappt nicht AWT, Swing, JavaFX & SWT 3
G JTable - prepareRenderer() überschreiben klappt nicht AWT, Swing, JavaFX & SWT 2
mabe83 Swing: jTableCellRenderer -> Klappt nur bei String-Spalte AWT, Swing, JavaFX & SWT 2
A Menuaufruf -> panel.removeAll(); klappt nicht? AWT, Swing, JavaFX & SWT 7
C JTree.setSelectionPath() klappt nicht AWT, Swing, JavaFX & SWT 4
J JCombobox in JTable klappt beim ersten Tastendruck zu AWT, Swing, JavaFX & SWT 3
B Textfeld, Rollbaken: Eingabe klappt nicht AWT, Swing, JavaFX & SWT 2
M JFrame im Vollbildmodus öffnen klappt nicht so ganz AWT, Swing, JavaFX & SWT 2
M Beschränkung auf Nur-Zahleneingabe in Textfield klappt nicht AWT, Swing, JavaFX & SWT 3
P createImage(int, int) klappt irgendwie nicht. AWT, Swing, JavaFX & SWT 11
I JScrollPane klappt nicht. Wer weiß Rat? AWT, Swing, JavaFX & SWT 12
K g.DrawImage unter paintComponent klappt nur beim 1. Aufruf AWT, Swing, JavaFX & SWT 3
P JTable aktuallisieren nach Löschvorgang klappt nicht. AWT, Swing, JavaFX & SWT 3
S html in jTextPane klappt teilweise und teilweise nicht AWT, Swing, JavaFX & SWT 6
M Eigen gemaltes JPanel im ScrollPane. klappt nicht. :-( AWT, Swing, JavaFX & SWT 10
B setExtendedState klappt net unter linux AWT, Swing, JavaFX & SWT 2
I MetalLookAndFeel klappt nicht AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben