पैकेज डेटा; आयात करें java.awt.EventQueue; आयात javax.swing.JFrame; आयात javax.swing.JPanel; पब्लिक क्लास मेन जेएफआरएम लागू करता है रननाबल {निजी जेपीनल सामग्री पेज; निजी जेपीनल पीपी = नया जेपीनल (); थ्रेड पृष्ठ = नया थ्रेड (); सार्वजनिक शून्य चलाने () (जबकि!! Thread.interrupted ()) {}} सार्वजनिक मुख्य () {setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); सेटबाउंड (100, 100, 640 + 16, 480 + 39); ContentPane = नया जेपीनल (); ContentPane.setBounds (0, 0, 640, 480); contentPane.setLayout (शून्य); setContentPane (contentPane); पीपी। सेटबाउंड (0, 0, 640, 480); pp.setBackground (Color.BLACK); contentPane.add (पीपी); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {EventQueue.invokeLater (नया रननाबल) (सार्वजनिक शून्य रन) {{मुख्य फ्रेम = नया मुख्य (), फ्रेम.सेस्वियबल (सच); फ्रेम.सेटअपने योग्य (गलत) ;} पकड़ (अपवाद ई) {e.printStackTrace ();}}}); }} उपरोक्त कोड काम करता है, लेकिन setResizable एक समस्या का कारण बनता है:
अगर मैं सेट को हटाने योग्य था, का मतलब। मैं इस समस्या के कारण बिना आकार बदलने को अक्षम कैसे कर सकता हूं?
आप पूर्ण लेआउट का उपयोग कर रहे हैं (नहीं लेआउट मैनेजर सेट), और काले पैनल की सीमा तय की गई है।
समाधान: एक लेआउट मैनेजर का उपयोग करें जो स्वत: आपकी सामग्री की सीमा को फिर से पुन: परिकलित करता है, इसलिए यह ठीक उसी कारण है कि काली पैनल अपनी अभिभावक की सीमा को नहीं भर जाएगा। उपलब्ध स्थान भरता है।
// बॉर्डर लेआउट आपका मित्र सामग्री है Portal.setLayout (नया बॉर्डर लेआउट ()); ... // इस लाइन को हटा दें, निश्चित सीमा तय करने की कोई ज़रूरत नहीं है, // पीपी। सेटबाउंड (0, 0, 640, 480); एडब्ल्यूटी / स्विंग में लेआउट प्रबंधकों का उपयोग कैसे करें:
लेआउट प्रबंधक के पास दो उद्देश्य हैं:
- गणना
- कंटेनर के भीतर अपनी सीमा निर्धारित करके लेआउट घटकों का न्यूनतम / अधिकतम / पसंदीदा आकार।
यदि आप चाहते हैं कि काली पैनल 640x480 का आकार , और विंडो को गैर-आकार देने योग्य हो, तो आप पसंदीदा आकार सेट कर सकते हैं और फिर विंडो को पैक करें , इसका आकार सामग्री के पसंदीदा आयाम के लिए उपयुक्त बनने के कारण हो सकता है:
pp.setPreferredSize (नया आयाम (640, 480)); ... पैक ();
No comments:
Post a Comment