xususiyatlarning Hashtable jadvalini qamrab oluvchi ActionListener dasturidir.
Dasturlash II fanidan 9-ma’ruza
12
Klaviaturalarni bog'lash kontekstida har bir KeyStrok kamida bitta harakat bilan
bog'langan (bu munosabat birma-bir emas, ammo bitta harakat o'zboshimchalik
bilan KeyStrokes soni bilan bog'lanishi mumkin ). KeyStroke-ga biron bir doirada
mos keladigan muhim voqea aniqlanganda, tegishli harakatlar chaqiriladi. Swing-
dagi barcha asosiy voqealarni boshqarish uchun ishlatiladi .
InputMaps va ActionMaps
javax.swing.InputMap va javax.swing.ActionMap
Amaliyotlarga KeyStrokes xaritasini tuzishning ikki xil mexanizmi bo'lgan .
JTextComponents tugmalar joylashuv sinfi ro'yxatini saqlash uchun foydalanilgan
Action/Keystroke juft. Boshqa barcha JComponentlar uchun Hashtable asturi
KeyStroke / ActionListener juftlarini o'z ichiga olgan komponent tomonidan
ta'minlangan .
Barcha tarkibiy qismlarga klaviatura birikmalariga nisbatan bir xil muomala
qilinishi kerak edi. Buni amalga oshirish uchun ikkita yangi sinf qo'shildi: InputMap
va ActionMap. Har bir tarkibiy qismda bittadan ActionMap va uchta InputMap
mavjud ( har bir qamrov uchun bitta kirish InputMap: WHEN_FOCUSED,
WHEN_IN_FOCUSED_WINDOW,
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ).
Har bir InputMap Associates Klaviatura ob'ekti (chaqiriqlariga kerak tegishli
harakatlar nomini ifodalovchi, odatda, bir string) bilan, va ActionMap Associates
bir ob'ekt bilan (bir harakatning nomini ifodalovchi, shuningdek, odatda, bir string)
Harakatlar . Shu tarzda KeyStrokes joriy hajmga qarab Amallar bilan taqqoslanadi .
Har bir komponentning asosiy ActionMap va InputMaplari uning UI Delegati
tomonidan yaratiladi. Eng ahd va maqsadlari uchun siz, chunki bevosita bu xaritalar
kirish kerak bo'lmaydi JComponentosonlik qo'shing va olib tashlash uchun
usullarini beradi si va harakatlar . Masalan, J1 ro'yxatidagi " HOME " amaliga F1
tugmachasini biriktirish uchun siz quyidagi kodni yozasiz:
myJList.getInputMap().put( KeyStroke.getKeyStroke(F1”), “HOME”);
Mavjud tugmalar birikmasini o'chirish uchun, masalan oldingi koddagi "F1"
tugmachasi, quyidagilarni yozasiz:
myJList.getInputMap().put( KeyStroke.getKeyStroke(F1”), “none”);
Xuddi shunday, siz quyidagicha Harakat yaratishingiz yoki mavjud Amalni
bekor qilishingiz mumkin:
Action homeAction = new AbstractAction(“HOME”) {
public void actionPerformed() {
// bu erda tadbirlarni boshqarish uchun maxsus kodni joylashtiring
}
};
myList.getActionMap().put(homeAction.get(Action.NAME), homeAction);
Matn tarkibiy qismlari bo'lsa, kod bir xil ishlaydi. Kaput ostida matn tarkibiy
qismining asosiy KeyMap-ga o'ralgan InputMap bor, shunda matn tarkibiy qismlari
KeyMaps- ni ichki va klaviaturaning yangi ulanish infratuzilmasiga mos ravishda
ishlatadi .