30. april 2009 - 10:16
Der er
6 kommentarer og 1 løsning
java multi keystroke
Hej jeg har følgende kode: jPanel1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_M ,InputEvent.ALT_DOWN_MASK), "_F"); jPanel1.getActionMap().put("_F", new AbstractAction(){ public void actionPerformed(ActionEvent ae){ System.out.println("hej"); } }); nu skriver den "hej" hvis jeg trykke "m" og "alt" tasten ned. Hvordan laver jeg hvis man ska trykke "m" "u" og "alt"?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
30. april 2009 - 15:10
#1
Saa vidt jeg ved kan man ikke teste paa ALT+M+U men du kan teste paa ALT+M og ALT+U. Og saa maa du definere at ALT+M efterfulgt af ALT+U eller ALT+U efterfulgt af ALT+M goer det du vil.
25. august 2009 - 15:27
#3
kan du give et kode eksempel, jeg forstår det i teorien, men ik hvordan det skal kodes.
25. august 2009 - 16:50
#4
Jeg kan proeve og bixe noget senere.
26. august 2009 - 05:21
#5
Simpel demo: package august; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; public class MultiKeys extends JFrame { private final static int WAITING_ALTM = 1; private final static int WAITING_ALTU = 2; private JPanel p; private int state; public MultiKeys() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); setTitle("Multi key demo"); p = new JPanel(); p.add(new JLabel("Press ALT/M and ALT/U")); p.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_M ,InputEvent.ALT_DOWN_MASK), "_ALTM"); p.getActionMap().put("_ALTM", new AbstractAction(){ public void actionPerformed(ActionEvent ae){ if(state == WAITING_ALTM) { JOptionPane.showMessageDialog(null, "ALT/M pressed"); state = WAITING_ALTU; } else { JOptionPane.showMessageDialog(null, "Press ALT/U !!!!"); } } }); p.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_U ,InputEvent.ALT_DOWN_MASK), "_ALTU"); p.getActionMap().put("_ALTU", new AbstractAction(){ public void actionPerformed(ActionEvent ae){ if(state == WAITING_ALTU) { JOptionPane.showMessageDialog(null, "ALT/U pressed"); state = WAITING_ALTM; } else { JOptionPane.showMessageDialog(null, "Press ALT/M !!!!"); } } }); getContentPane().add(p, BorderLayout.CENTER); setSize(600, 400); state = WAITING_ALTM; } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new MultiKeys(); f.setVisible(true); } }); } }
26. august 2009 - 14:51
#6
tak, smid et svar
26. august 2009 - 14:57
#7
svar
Kurser inden for grundlæggende programmering