यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
6. इनपुट संभालना
आप क्या सीखेंगे: टच, कुंजियों और जेस्चर पर प्रतिक्रिया देना, और टेक्स्ट इनपुट पढ़ना। पूर्वापेक्षाएँ: शैलियाँ और थीम।
संपूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
कार्य जोड़ने का फ़ॉर्म: सत्यापन वाला फ़ील्ड + बटन, सबमिट पर टेक्स्ट पढ़ना और Hint के साथ प्रतिक्रिया।
कार्यों को एक आउटपुट Label में जोड़ता है। जैसा है वैसा ही compile होता है।
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
public class MainWindow extends Window
{
private final TextField campo = new TextField().caption("Nova tarefa");
private final Label saida = new Label("Nenhuma tarefa ainda");
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
add(LAY_AUTO, campo);
Button add = new Button("Adicionar");
add.onAction(c -> { // paint thread पर चलता है
String texto = campo.getText().trim();
if (texto.isEmpty()) { Hint.show("Digite algo", 2000); return; } // सत्यापन (2 args)
adicionarTarefa(texto);
campo.clearText();
});
add(LAY_AUTO, add);
add(LAY_AUTO, saida);
}
private void adicionarTarefa(String texto)
{
saida.setText("Adicionada: " + texto);
saida.repaint();
}
}
नीचे के अंश केवल मूल भाग दिखाते हैं (जो
onShow()के भीतर जाता है)। चलाने के लिए, उन्हें ऊपर केMainWindowढाँचे में रखें।
onAction बनाम onActionThread
botao.onAction(c -> salvar()); // paint thread पर चलता है (तेज़, UI को छूता है)
botao.onActionThread(c -> { // बैकग्राउंड thread पर चलता है (भारी काम)
var dados = baixar();
c.onUI(() -> mostrar(dados)); // UI पर वापस
});
टेक्स्ट इनपुट — सबमिट पर पढ़ें
प्रति-कुंजी कोई इवेंट नहीं है: जब ज़रूरत हो तब getText() पढ़ें (उदा.: बटन पर)।
TextField campo = new TextField().caption("Nova tarefa");
Button add = new Button("Adicionar");
add.onAction(c -> {
String texto = campo.getText().trim();
if (texto.isEmpty()) { Hint.show("Digite algo", 2000); return; } // सत्यापन
adicionarTarefa(texto);
campo.clearText();
});
फ़ोकस: जब फ़ोकस के मिलने/खोने पर प्रतिक्रिया देनी हो तब किसी उपवर्ग में onFocus()/onBlur() को ओवरराइड करें।
टच जेस्चर (ओवरराइड करने योग्य)
किसी custom कॉम्पोनेंट में, जेस्चर के लिए handlers को ओवरराइड करें:
@Override public void onLongTouch(float x, float y) throws Exception { abrirDetalhe(); }
// साथ ही: onTouchDown/onTouchUp/onPan
callbacks में अपवाद
Debug.handleमें जाते हैं (frame गिराने के लिए ऊपर नहीं उठते)।
इस चरण में क्या बनाया जाता है
कार्य जोड़ने का फ़ॉर्म (फ़ील्ड + बटन + सत्यापन) और विवरण खोलने का जेस्चर।
पुनरावलोकन
onAction (UI) / onActionThread (पृष्ठभूमि); सबमिट पर getText() से टेक्स्ट पढ़ें; ओवरराइड करने योग्य
handlers द्वारा जेस्चर; त्रुटियाँ Debug.handle में जाती हैं।
अगले कदम
यह भी देखें
- फ़ॉर्म और इनपुट (ui) · प्रामाणिक स्रोत: अध्याय 6 · अध्याय 14