"Acebone" <acebone@f2s.com> wrote in message
news:20010419.16001508@mis.configured.host...
Wauv (og mange tak)!
Med fare for at virke anmassende: Hvad skal jeg instantiere for at få
keyboard-kommandoer på (CTRL+B osv.)?
--
Acebone
acebone@f2s.com
www.acebone.f2s.com
Det har enten noget at gøre med "mnemonic", keymaps eller key accelleration
Det nemmeste med en JButton:
JButton b = new JButton("Quit");
b.setMnemonic('Q');
som så mapper <ALT>-Q til knappen
Hvis det er en JLabel som er label for et JTextfield, kan man gøre følgende:
JTextField tf = new JTextField(3);
JLabel l = new JLabel("Navn");
l.setLabelFor(tf);
l.setDisplayedMnemonic('N');
Som så sætter focus på text felt ved <ALT>-N.
Hvis man har en JMenuBar med JMenuItem's kan man lave key accellerator til
sine menu items, som f.eks.
JMenuItem m = new JMenuItem("Copy");
m.setAccelerator(KeyStroke.getKeyStroke('C', Event.CTRL_MASK, false));
Endelig kan alle componenter modtage key events (lidt mere tricky):
final JTextArea area = new JTextArea(10,10);
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
area.append("Hej verden");
}
};
KeyStroke stroke = KeyStroke.getKeyStroke('A', Event.CTRL_MASK, false);
area.registerKeyboardAction(listener, stroke, JComponent.WHEN_FOCUSED);
Den sidste er den fulde, og kan anvendes på alle JComponents efter behov.
Prøv at trykke <CTRL>-A i dette text area, og den vil indsætte hej verden
WHEN_FOCUSED bestemmer hvornår en component får dirigeret events til sig:
WHEN_FOCUSED: kun når denne komponent har fokus
WHEN_IN_FOCUSED_WINDOW Denne eller parent(rekursiv) har fokus
WHEN_ANCESTOR_OF_FOCUSED_WINDOW Denne eller child(rekursiv) har fokus
--
/Niels Bech Nielsen -- Logical
SCJ2P - ** Sun Certified Java 2 Programmer **