दिलचस्प पोस्ट
मैं अपनी प्रोजेक्ट में एक अलग प्रोजेक्ट से जेएसपी फ़ाइल कैसे शामिल करूं? टेम्पलेट किए गए व्युत्पन्न वर्ग में, सदस्य वर्ग के सदस्यों के भीतर "this->" के साथ मुझे बेस क्लास के सदस्यों के नाम के योग्य होने की आवश्यकता क्यों है? R: दो अनियमित समय श्रृंखला मर्ज करें एंड्रॉइड प्रोजेक्ट को बाहरी .जर फ़ाइल आयात करना JS.s ऑब्जेक्ट को jQuery.serialize () डेटा कन्वर्ट करने के लिए कैसे? क्या पोस्टग्रेज़ में फ़ंक्शन ओवरलोडिंग को अक्षम करने का कोई तरीका है? XSLT 1.0 में नकल-नामस्थान = "नहीं" नकल कैसे करें? सीएसएस केंद्र प्रदर्शन इनलाइन ब्लॉक? क्या iPhone पर छूने का एक तरीका है? .NET में LINQ और लम्बा अभिव्यक्ति की कार्यक्षमता और प्रदर्शन क्या है? एंड्रॉइड डिकोडर-> डीकोड बिटमैप डाउनलोड करने के लिए गलत लौटाया आंशिक दृश्य ASP.NET MVC 3 से रेजर व्यू इंजन के साथ विशिष्ट अनुभागों में सामग्री इंजेक्शन मैं बाउन्सी कैस्टल के साथ टीएलएस कैसे करूं? एंड्रॉइड java.lang.NoClassDefFound त्रुटि: org.jsoup.Jsoup sendmail: उबंटू पर प्रेषण मेल को कॉन्फ़िगर कैसे करें?

कैसे एक JTextField UnFocus करने के लिए

जब नेटबैन्स का प्रयोग किया जाता है, तो मेरा पहला भार JTextField स्वचालित रूप से फ़ोकस होता है, और इस JTextField में मैंने "अपना उपयोगकर्ता नाम दर्ज करें" लिखा है, जब उपयोगकर्ता इस फ़ील्ड पर क्लिक करता है, लेकिन जब एप्लिकेशन लोड होता है , यह फ़ील्ड ध्यान केंद्रित है, इसका मतलब है कि मैं "अपना उपयोगकर्ता नाम दर्ज नहीं कर सकता", इसे स्टार्टअप पर कैसे फोकस करना है?

Solutions Collecting From Web of "कैसे एक JTextField UnFocus करने के लिए"

एक लॉग-इन सबसे अच्छा एक मोडल संवाद में किया जाएगा, लेकिन यह उस समस्या को प्रस्तुत करता है जिसमें विधि requestFocusInWindow() को घटक दिखाई देने के बाद कहा जाना चाहिए, लेकिन यह इस तथ्य से अवरुद्ध है कि संवाद मोडल है!

संवाद के दृश्य के बाद फोकस प्रबंधित करने के लिए यह उदाहरण रोब कैमिक के RequestFocusListener ( डायलॉग फ़ोकस में प्रस्तुत किया गया है) का उपयोग करता है

केंद्रित पासवर्ड फ़ील्ड के साथ लॉगिन करें

नोट: उपयोगकर्ता ऐसा कुछ भी करने से पहले ऐसा दिखता है। पासवर्ड फ़ील्ड डिफ़ॉल्ट रूप से केंद्रित है

 package test.t100.t001; import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.event.AncestorEvent; import javax.swing.event.AncestorListener; public class LoginRequired { LoginRequired() { JFrame f = new JFrame("Login Required"); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setSize(400, 300); f.setResizable(false); f.setLocationByPlatform(true); f.setVisible(true); showLogin(f); } private void showLogin(JFrame frame) { JPanel p = new JPanel(new BorderLayout(5,5)); JPanel labels = new JPanel(new GridLayout(0,1,2,2)); labels.add(new JLabel("User Name", SwingConstants.RIGHT)); labels.add(new JLabel("Password", SwingConstants.RIGHT)); p.add(labels, BorderLayout.WEST); JPanel controls = new JPanel(new GridLayout(0,1,2,2)); JTextField username = new JTextField("Joe Blogs"); controls.add(username); JPasswordField password = new JPasswordField(); password.addAncestorListener(new RequestFocusListener(false)); controls.add(password); p.add(controls, BorderLayout.CENTER); //LayoutManager l = new GroupLayout(p); //p.setLayout(l); JOptionPane.showMessageDialog( frame, p, "Log In", JOptionPane.QUESTION_MESSAGE); } /** * @param args none */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { new LoginRequired(); } }); } } /** * Convenience class to request focus on a component. * * When the component is added to a realized Window then component will * request focus immediately, since the ancestorAdded event is fired * immediately. * * When the component is added to a non realized Window, then the focus * request will be made once the window is realized, since the * ancestorAdded event will not be fired until then. * * Using the default constructor will cause the listener to be removed * from the component once the AncestorEvent is generated. A second constructor * allows you to specify a boolean value of false to prevent the * AncestorListener from being removed when the event is generated. This will * allow you to reuse the listener each time the event is generated. */ class RequestFocusListener implements AncestorListener { private boolean removeListener; /* * Convenience constructor. The listener is only used once and then it is * removed from the component. */ public RequestFocusListener() { this(true); } /* * Constructor that controls whether this listen can be used once or * multiple times. * * @param removeListener when true this listener is only invoked once * otherwise it can be invoked multiple times. */ public RequestFocusListener(boolean removeListener) { this.removeListener = removeListener; } @Override public void ancestorAdded(AncestorEvent e) { JComponent component = e.getComponent(); component.requestFocusInWindow(); if (removeListener) component.removeAncestorListener( this ); } @Override public void ancestorMoved(AncestorEvent e) {} @Override public void ancestorRemoved(AncestorEvent e) {} } 

किसी अन्य घटक पर फ़ोकस सेट करने के लिए requestFocusInWindow() का उपयोग करें, न कि आपके JTextfield पहले।

लेकिन मैं सुझाव देता हूं कि मूल फ़ोकस सिस्टम को बदलने के बजाय, initComponents() पर initComponents() setText(String s) initComponents() बाद initComponents() में कॉल करें initComponents() में होने का अनुमान लगाया गया)।

आगे वैकल्पिक रीडिंग: फ़ोकस सबसिस्टम का उपयोग कैसे करें

मुझे लगता है कि यूजरनेम फ़ील्ड पर कुंजीपटल फ़ोकस देना सही व्यवहार है, यह मानते हुए कि उपयोगकर्ता को पहले क्या करना चाहिए। फोकस पर समाशोधन के बजाय, उपयोगकर्ता के कुछ प्रकार के बाद ही क्यों न साफ़ करें ?:

 import java.awt.*; import javax.swing.*; import javax.swing.text.Document; public class PlaceholderTextField extends JTextField { public static void main(final String[] args) { final PlaceholderTextField tf = new PlaceholderTextField(""); tf.setColumns(20); tf.setPlaceholder("All your base are belong to us!"); final Font f = tf.getFont(); tf.setFont(new Font(f.getName(), f.getStyle(), 30)); JOptionPane.showMessageDialog(null, tf); } private String placeholder; public PlaceholderTextField() { } public PlaceholderTextField( final Document pDoc, final String pText, final int pColumns) { super(pDoc, pText, pColumns); } public PlaceholderTextField(final int pColumns) { super(pColumns); } public PlaceholderTextField(final String pText) { super(pText); } public PlaceholderTextField(final String pText, final int pColumns) { super(pText, pColumns); } public String getPlaceholder() { return placeholder; } @Override protected void paintComponent(final Graphics pG) { super.paintComponent(pG); if (placeholder.length() == 0 || getText().length() > 0) { return; } final Graphics2D g = (Graphics2D) pG; g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(getDisabledTextColor()); g.drawString(placeholder, getInsets().left, pG.getFontMetrics() .getMaxAscent() + getInsets().top); } public void setPlaceholder(final String s) { placeholder = s; } } 

यदि आप वास्तव में फ़ोकस को हटाना चाहते हैं, तो कुछ विकल्प:

  • component.setFocusable(false);
  • KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
  • KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
 textField.setFocusable(false); textField.setFocusable(true); 

यदि, और केवल तभी, TextField फ़ोकस किया गया था, टैब-ऑर्डर के ऑर्डर में अगला घटक स्वचालित रूप से फ़ोकस करेगा। प्रभाव एक टैब प्रेस के समान है।

(जीयूआई में सिर्फ एक फोकसएबल घटक के साथ परीक्षण नहीं किया गया :))