मॉनिटर रिज़ॉल्यूशन की परवाह किए बिना, JFrame को केंद्र में कैसे सेट करें? [बन्द है]


197

जावा के साथ काम करते समय, मुझे अपने मुख्य विंडो को स्क्रीन के केंद्र में रखना मुश्किल होता है जब मैं आवेदन शुरू करता हूं।

क्या ऐसा कोई तरीका है जो मैं कर सकता हूं? यह खड़ी केंद्रित होना जरूरी नहीं है, क्षैतिज संरेखण मेरे लिए अधिक महत्वपूर्ण लक्ष्य है। लेकिन ऊर्ध्वाधर संरेखण भी स्वागत है।

जवाबों:


232

मैंने हमेशा इसे इस तरह से किया:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

thisJFrame कहाँ शामिल है।


1
मुझे पता है कि यह उत्तर वास्तव में पुराना है लेकिन क्या स्थैतिक संदर्भ में ऐसा करने का कोई संभावित तरीका है? मैं उस दिशा में काम करने या सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) को छोड़ने के बीच निर्णय ले रहा हूं कि मैं जो भी कारण का उपयोग करना चाहता था।
2xedo

14
यह एक एकल मॉनिटर सेटअप में काम करेगा, लेकिन दोहरे मॉनिटर के साथ यह दोनों को अलग कर सकता है (यह मानते हुए कि वे एक ही संकल्प हैं)। setLocationRelativeTo(null)मल्टी-मॉनिटर सेटअप में भी प्राथमिक मॉनीटर पर इसका उपयोग करना केंद्र होगा।
रंगीनी

1
ध्यान रखें कि आप JFrame दिखाई देने वाले BEFORE को अपने केंद्र में सेट करें।
हंटर एस

4
@ शिकारी: यह गलत है। वास्तव में, यह अनुशंसा की जाती है कि जब तक आप इसे केंद्र न करें तब तक इसे दिखाई न दें। इस तरह यह दिखाई नहीं देगा और फिर चारों ओर कूद जाएगा। जब तक आपने इस उत्तर में कोड से पहले फ्रेम को पैक किया है या आयाम सेट किए हैं, तब तक आप ठीक रहेंगे।
एरिक रॉबर्टसन

521

उपयोग setLocationRelativeTo(null)

जब आप इसे पास करते हैं तो इस पद्धति का एक विशेष प्रभाव होता है null। जावदोक के अनुसार:

यदि घटक अशक्त है, या इस घटक से जुड़े ग्राफ़िक्सकॉन्फ़िगरेशन शून्य है, तो विंडो को स्क्रीन के केंद्र में रखा गया है।

यह आकार निर्धारित करने या कॉल करने के बाद किया जाना चाहिए pack(), लेकिन इसे दृश्यमान सेट करने से पहले, इस तरह:

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

102
+1 यदि पैक () विधि का उपयोग किया जाता है, तो setLocationRelativeToपैक () विधि कॉल के बाद उपयोग किया जाना चाहिए
रवींद्र गुल्लापल्ली

6
@ मुझे पता है क्योंकि शायद यह दोहरी मॉनिटर कॉन्फ़िगरेशन के साथ काम नहीं करता है। : पी
अंकित

17
ऐसा लगता है कि विधि के बाद कहा जाना चाहिए .setSize()
कामिल

6
यह एक मल्टी-मॉनिटर सेटअप में काम करता है और जैसा कि टिप्पणियों में कहा गया है कि इसे पैक () और सेटसाइज़ () के बाद कहा जाना चाहिए, अगर वे बिल्कुल भी कॉल किए जाते हैं।
पॉल ग्रीगोएर

2
@ यह मेरे दोहरी मॉनिटर सेटअप के साथ पूरी तरह से काम करता है। "सर्वश्रेष्ठ" उत्तर हमेशा ओपी द्वारा चुना जाता है।
कैंट

59

आप JFrame.setLocationRelativeTo(null)विंडो को सेंटर करने के लिए कॉल कर सकते हैं। इससे पहले यह सुनिश्चित कर लेंJFrame.setVisible(true)


20
+1 यदि पैक () विधि का उपयोग किया जाता है, तो setLocationRelativeToपैक () विधि कॉल के बाद उपयोग किया जाना चाहिए
रवींद्र गुल्लापल्ली

29

बस फ़ॉर्म पर क्लिक करें और JFrame गुणों पर जाएं, फिर कोड टैब और जांचें Generate Center

यहां छवि विवरण दर्ज करें


मैंने इस बारे में कभी नहीं सोचा था। वैसे भी, उस कोड के बारे में कैसे जो हम क्लिक करने के बाद खुद के पीछे काम करते हैं ....? @ हेंकवैन बोबीजेन
गुमुराह

11

इस रूप में सरल ...

setSize(220, 400);
setLocationRelativeTo(null);  

या यदि आप एक फ्रेम का उपयोग कर रहे हैं तो फ्रेम को सेट करें

frame.setSize(220, 400);
frame.setLocationRelativeTo(null);  

डॉक्स से स्पष्टीकरण के लिए :

यदि घटक अशक्त है, या इस घटक से जुड़े ग्राफ़िक्सकॉन्फ़िगरेशन शून्य है, तो विंडो को स्क्रीन के केंद्र में रखा गया है।


7

मैं अपने डेवलपर पर्यावरण के रूप में NetBeans IDE 7.2.1 का उपयोग कर रहा हूं और वहां आपके पास JForm गुणों को कॉन्फ़िगर करने का विकल्प है।

JForm गुण में 'कोड' टैब पर जाएं और 'जनरेट सेंटर' कॉन्फ़िगर करें। 'आकार परिवर्तन संहिता' बनाने के लिए आपको सबसे पहले फॉर्म साइज पॉलिसी निर्धारित करनी होगी।


6

मैं NetBeans IDE 7.3 का उपयोग कर रहा हूं और इसी तरह मैं अपने JFrame को केंद्रीकृत करता हूं। सुनिश्चित करें कि आप JFrame पैनल पर क्लिक करें और अपने JFrame प्रॉपर्टी बार में जाएं, कोड बार पर क्लिक करें और Generate Center चेक बॉक्स का चयन करें।


2

यदि आप NetBeans का उपयोग करते हैं, तो बस डिज़ाइन दृश्य पर फ़्रेम पर क्लिक करें, फिर इसके गुणों पर कोड टैब। अगला, 'जनरेट सेंटर' जांचें। वह काम पूरा हो जाएगा।


1

यदि आप स्पष्ट रूप setPreferredSize(new Dimension(X, Y));से जानते हैं तो इसका उपयोग करना बेहतर है:

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);


1

आप इस विधि का उपयोग कर सकते हैं, जो जेफ्रेम को एक ही समय में केंद्रित और पूर्ण स्क्रीन की अनुमति देता है।

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH);

0

नेट बीन्स जीयूआई में - JFrame (करने के लिए जाने राइट क्लिक पर JFrame नेविगेटर में) गुण, के तहत कोड , प्रपत्र आकार नीति गुण का चयन करें आकार कोड जनरेट । एक ही विंडो में, अनटिक जेनरेट पोजिशन और टिक जनरेट साइज और सेंटर

प्रोग्रामिंग का आनंद लें। रमण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.