olması gerekir. Tuşa basma/serbest bırakma özelliği için InputMap
ve ActionMap
'u kullanmaya karar verdim.tuş sadece ben (<code>JComponent</code> miras) özel bir bileşen vardır ve bir bağlantı altını çizmek istiyorum CTRL_DOWN_MASK ve CTRL_MASK (win10 için)
Ben inme bulmak için bu kodu kullanın:
stroke = KeyStroke.getKeyStroke("pressed CONTROL");
Ama her nasılsa yanlıştır. Ben JComponent ait processKeyBinding
yöntemini ayıklanan ve ben CTRL bir KeyStroke
sahip Değiştirici basarsanız 130.
(bu benim InputMap olduğunu öğrenmek arg0 Klavyeden incomming tuş olduğunu)
ben 130 kodu 128
vardır ve CTRL_MASK
kodu 2
sahiptir CTRL_DOWN_MASK
eklenmesi sonucu olduğunu düşünüyorum.
- Bu değiştiricileri neden eklemek zorundayım?
- Bu çapraz platform mu?
- Herhangi bir resmi dokümantasyon var mı?
için tam bir örnek camickr istekleri:
public class Test extends JLabel {
public static void main(String[] args) {
final JFrame jf = new JFrame("Test");
final Test label = new Test();
jf.getContentPane().add(label);
jf.setBounds(200, 200, 500, 500);
jf.pack();
jf.setVisible(true);
label.grabFocus();
}
public Test() {
super("Foobar");
addBoldOnCtrl();
}
public void addBoldOnCtrl() {
final KeyStroke onDown = KeyStroke.getKeyStroke(KeyEvent.VK_CONTROL, KeyEvent.CTRL_MASK + KeyEvent.CTRL_DOWN_MASK);
final String onDownName = "react on ctrl";
getInputMap().put(onDown, onDownName);
getActionMap().put(onDownName, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
final Font f = getFont();
setFont(new Font(f.getFontName(), f.getStyle(), f.getSize() + 2));
repaint();
}
});
}
}
[JavaDocs] 'da belirtildiği gibi (https://docs.oracle.com/javase/7/docs/api/java/awt/event/InputEvent.html#CTRL_MASK) - * "Kontrol tuşu değiştirici sabiti. CTRL_DOWN_MASK yerine bunun yerine kullanılması önerilir. "* - Muhakeme, API'nin bir kısmının değiştirilmiş olması, muhtemelen bir hatanın üstesinden gelmesi ve" CTRL_MASK_DOWN "işlevini kullanmayı tercih etmeye geçmesidir. Genellikle – MadProgrammer
Vurgulamak istediğiniz anlamına mı geliyor? Kontrol tuşu kapalıyken fareyi kullanarak bir bağlantı? Bunun için 'MouseEvent ' – MadProgrammer
@MadProgammer 1'in özelliklerini inceleyebilirsiniz. InputMap bu şekilde çalışmaz, InputMap' AWTKeyStroke' nin eşitlik-yöntemini kullanır. 2. Hayır, fareyi hareket ettirdiğimi farzedelim ve bir mousemove olmadan CTRL tuşuna bastığımda klavyedeki tuşa basmak fare hareketi değildir ve 'MouseEvent 'tetiklenmez. –