9-lekciya: Klaviyatura waqıyaları hám olardı qayta islew
Jobası:
9.1.
KeyTyped
metodı
9.2.
KeyPressed
metodı
9.3.
KeyReleased
metodı
Paydalanıwshılar grafikalıq interfeysli programmalarda jumıs
islegende tek
ǵana tıshqansha emes, al klaviyatura járdemide úlken boladı.
Java Swing
programma jaratıwshılarǵa, paydalanıwshı klavishanı basqan waqıttaǵı hár qıylı
klaviyatura waqıyaların qayta islew múmkinshiligin beredi. Usınday
klaviyatura
waqıyaların qayta islewdi qalay ámelge asırıwdı kórip shıǵamız. Onıń ushın,
java.awt.event paketindegi
KeyListener
interfeysin kórip shıǵamız.
Basqa waqıyalardı qayta islegendey klaviyatura waqıyaların
qayta islew
ushında arnawlı interfeysten paydalanıladı. Bul interfeys joqarıda aytılǵan
KeyListener
interfeysi esaplanadı.
KeyListener
diń 3 metodı bar. Olar:
keyTyped()
,
keyPressed()
hám
keyReleased()
.
Bul metodlar sistema tárepinen qashan shaqırılatuǵınlıǵın kórip shıǵamız.
keyTyped()
metodı qashan paydalanıwshı klaviyaturadan klavishanı basıp-
jazdırǵan waqıtta shaqırıladı. Ádette klaviyaturadan Unicode simvolları bolǵan
klavishanı basqan waqıtta isletiledi.
keyPressed()
metodı klaviyaturadaǵı
qálegen klavishtıń basılǵan waqtında, al
keyReleased()
metodı bolsa klavishanı
jazdırǵan waqıtta shaqırıladı. Kerekli komponentaǵa bul waqıyanı qosıw ushın
addKeyListener
qosıladı. Máselen
JTextField
komponentasına qosıw
tómendegishe ámelge asırıladı:
JTextField textField = new JTextField(20);
textField.addKeyListener(new KeyListener() {
// Klavish basıldı, biraq jazdırılmadı
public void keyPressed(KeyEvent e) {
}
//Klavish jazdırıldı
public void keyReleased(KeyEvent e) {
}
//klavish basıldı hám jazdırıldı
public void keyTyped(KeyEvent e) {
}
});
Bunda dáslep
JTextField
tekst maydanshası jaratıladı. Onnan soń
addKeyListener
metodı járdeminde
KeyListener
interfeysiniń barlıq
metodların realizaciya qılıwshı anonim listener qosıladı.
Ádette
KeyListener
diń barlıq 3 metodıda paydalanıla berilmeydi. Eger biz
implements KeyListener
qılmaqshı bolsaq, bos bolsada barlıq 3 metodtı da
realizaciya qılıwımız kerek boladı. Bunday jaǵdayda usı bos 3 metod bar bolǵan
arnawlı
KeyAdapter
abstrakt klasınanda paydalanıwǵa boladı. Onı tómendegishe
ámelge asırıw múmkin.
textField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
}
});
Bunda paydalanıwshı klaviyatura klavishın basqan waqıtta
sistema
keyTyped()
,
keyPressed()
,
keyRealesed()
metodların shaqıradı hám
basılǵan waqıya haqqındaǵı barlıq
informaciya
KeyEvent
obyektine jiberiledi.
Usı jerden basılǵan klavish kodın
getKeyCode()
metodı arqalı anıqawǵa boladı.
Bunnan tısqarı, Alt, Shift, Ctrl klavishlarınıń basılǵan yamasa basılmaǵanlıǵın,
isAltDown()
,
isShiftDown()
,
isControlDown()
metodları arqalı anıqlawǵa
boladı.
KeyEvent
klasında birneshe konstantalar bar. Bunda hár bir konstanta sáykes
klavish kodların ózinde saqlaydı. Sonlıqtan, barlıq klavishlardıń kodların
biliw
shárt emes, al tiyisli klavish konstantasınan paydalanǵan maqul. Bul konstantalardı
atı arqalı ańsat anıqlawǵa boladı. Máselen, Enter klavishası
KeyEvent.VK_ENTER
yamasa F klavishası
KeyEvent.VK_F
.
Sonıda aytıp ótiw kerek, klaviyatura waqıyası
qashan fokus komponentte
bolǵan waqıtta ǵana qayta islenedi.
Tómendegishe mısal qarayıq. Bunda berilgen
JTextField
ke tek ǵana sanlar
kiritiletuǵın bolsın. Programma aynası tómendegishe:
9.1-súwret.
Programma kodları:
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
char ch = evt.getKeyChar();
if(ch<'0' || ch>'9')
evt.consume();
}
❖
Tákirarlaw sorawları
1.
Klaviyatura waqıyaların qayta islew ushın qaysı interfeysten paydalanıladı?
2.
KeyListener
de neshe metod bar?
3.
KeyTyped()
metod wazıypasın túsindiriń
4.
KeyPressed()
metod wazıypasın túsindiriń
5.
KeyReleased()
metod wazıypasın túsindiriń
6.
getKeyCode()
hám getKeyChar
()
metodlar parqın túsindiriń
❖
Internet saytlar
1.
https://javaswing.wordpress.com/2009/12/23/keylistener_using/
2.
https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyListener.ht
ml