मेरे पास एक छोटा जावा डेस्कटॉप ऐप है जो स्विंग का उपयोग करता है। विभिन्न प्रकार के कुछ इनपुट फ़ील्ड (JTextField, JComboBox, JSpinner, JFormattedTextField) के साथ एक डेटा प्रविष्टि संवाद है। जब मैं फॉर्म के माध्यम से टैबबिंग करके या माउस के साथ क्लिक करके JFormattedTextFields को सक्रिय करता हूं, तो मैं इसे वर्तमान में मौजूद सभी टेक्स्ट का चयन करना चाहता हूं। इस तरह, उपयोगकर्ता सिर्फ टाइपिंग शुरू कर सकते हैं और डिफ़ॉल्ट मानों को ओवरराइट कर सकते हैं।जब यह फोकस हो जाता है तो JFormattedTextField में सभी टेक्स्ट का चयन कैसे करें?
मैं यह कैसे कर सकता हूं? मैंने एक फोकस लिस्टनर/फोकस एडाप्टर का उपयोग किया जो JFormattedTextField पर selectAll() को कॉल करता है, लेकिन यह कुछ भी नहीं चुनता है, हालांकि फोकसएडाप्टर की फोकस प्राप्त() विधि को कॉल किया गया है (नीचे कोड नमूना देखें)।
private javax.swing.JFormattedTextField pricePerLiter;
// ...
pricePerLiter.setFormatterFactory(
new JFormattedTextField.AbstractFormatterFactory() {
private NumberFormatter formatter = null;
public JFormattedTextField.AbstractFormatter
getFormatter(JFormattedTextField jft) {
if (formatter == null) {
formatter = new NumberFormatter(new DecimalFormat("#0.000"));
formatter.setValueClass(Double.class);
}
return formatter;
}
});
// ...
pricePerLiter.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
pricePerLiter.selectAll();
}
});
कोई विचार? मजाकिया बात यह है कि कम से कम जब फॉर्म के माध्यम से टैबबिंग करते हैं, तो उसके सभी टेक्स्ट को चुनकर जेटीक्स्टफिल्ड और जेएसपीनर दोनों के लिए डिफ़ॉल्ट व्यवहार होता है।
धन्यवाद, बस इतना ही। मैं केवल अनुमान लगा सकता हूं कि NumberFormatter कुछ ऐसा कर रहा है जो selectAll() को पूर्ववत करता है? –
हां यह करता है। यह मान स्वरूपित करता है और पाठ को रीसेट करता है। –
+1 इसे चाहिए, तुरंत यह याद नहीं कर सका कि यह मेरा स्वयं कैसे करें, गुगल हो गया और तुरंत यह जवाब मिला। धन्यवाद! –