के साथ क्रियाओं का उपयोग करके मैं एक ऐसा एप्लीकेशन विकसित कर रहा हूं जहां मैं किसी JTextArea की सामग्री को अद्यतन करने वाले उपयोगकर्ता द्वारा मैन्युअल रूप से कुछ ट्रिगर करना चाहता हूं, या मैन्युअल रूप से जेबटन दबाकर।दस्तावेज़ लिस्टनर
मैंने दस्तावेज़ लिस्टनर का उपयोग करके पहला भाग किया है और प्रासंगिक कोड को insertUpdate
विधि में डाल दिया है।
मैंने Action
एस पहले उपयोग नहीं किया है, लेकिन मैंने सुना है कि वे उन परिस्थितियों के लिए उपयोगी हैं जहां आपको कई नियंत्रणों से ट्रिगर करने की आवश्यकता है। क्या दस्तावेज़ लिस्टनर से कार्रवाई को ट्रिगर करना संभव है? क्या क्रियाओं का उपयोग करना एक अच्छा विचार है, या क्या मुझे अपना कोड सामान्य विधि में रखना चाहिए?
(निर्माता में):
textAreaInput.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
// do something
}
public void removeUpdate(DocumentEvent e) {}
public void changedUpdate(DocumentEvent e) {}
});
और कार्रवाई है, जो एक क्षेत्र है:
Action doSomething = new AbstractAction("Do Something!") {
@Override
public void actionPerformed(ActionEvent e) {
// do it
}
};
स्पष्टीकरण:
JTextArea पाठ कि में चिपकाया जाता है प्राप्त होगा उपयोगकर्ता द्वारा, जिसे मैं स्वचालित रूप से पार्स करना चाहता हूं। पार्सिंग जीयूआई में कहीं और सेट अन्य मूल्यों पर निर्भर करता है; यदि उपयोगकर्ता इन अन्य मानों को बदलता है, तो वह पाठ को दोबारा जोड़ना चाह सकता है, इसलिए बटन दबाकर एक ही कार्रवाई करने की आवश्यकता है।
'एक्शन' के फायदे आम तौर पर उल्लिखित मामूली ओवरहेड से अधिक हैं, जैसा कि यहां बताया गया है [http://stackoverflow.com/questions/7253712/java-swing-using-actionmap/7255711#7255711)। – trashgod
आपका मतलब है कि insertDdate विधि में 'doSomething.actionPerformed (new ActionEvent (???)) 'जैसे कुछ जोड़ें? –
हां; लेकिन, @camickr नोट्स के रूप में, आपको यह तय करना होगा कि ऐसा करना समझ में आता है या नहीं। सिर्फ एक सामान्य विधि क्यों नहीं बुलाओ? – trashgod