2011-01-20 10 views
8

के अंदर मुझे किसी अन्य के अंदर जेपीनल के साथ समस्या है। मुझे नहीं पता क्यों, लेकिन परिणाम एक साधारण वर्ग है, लेकिन आयाम सही नहीं हैं। ऐसा क्यों है?जेपीनेल अन्य

import java.awt.Color; 
import java.awt.Container; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class jj extends JFrame { 

    private JPanel painel3; 
    private JPanel painel5; 
    private Container container; 

    public jj() { 

     container = getContentPane(); 
     container.setLayout(null); 

     painel5 = new JPanel(); 
     painel5.setBackground(Color.red); 
     painel5.setBounds(120, 110, 100, 120); 
     painel3 = new JPanel(); 
     painel3.setBackground(Color.white); 
     painel3.add(painel5); 
     painel3.setBounds(50, 50, 290, 220); 

     container.add(painel3); 

     // frame 
     setSize(1000, 900); 
     setLocation(200, 50); 
     setResizable(false); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 

    public static void main(String[] args) { 
     new jj(); 
    } 
} 

उत्तर

5

तुम भी शून्य पर अन्यथा डिफ़ॉल्ट FlowLayout प्रयोग किया जाता है panel3 के लिए लेआउट निर्धारित करने की आवश्यकता:

panel3.setLayout(null);

+1

'painel3.setlayout (शून्य) जोड़ना;' जब मैंने अपने कोड का परीक्षण किया तो काम किया। – Puddingfox

2

हालांकि और भी बेहतर अशक्त लेआउट के उपयोग और setBounds/setSize बल्कि से बचने के लिए है लेआउट प्रबंधक आपको अपनी जीयूआई डालने में मदद करते हैं। आप यहां उन पर पढ़ सकते हैं: Laying out components in a container

3

कुछ अतिरिक्त अनुशंसाएं। लेआउटमैनेजर्स का उपयोग करना सीखें। उनके पास थोड़ी सी सीखने की वक्र हो सकती है लेकिन यह निश्चित रूप से इसके लायक होगा। अच्छा ट्यूटोरियल: http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

जावा मानकों के अनुसार, कक्षा के नामों को पूंजी पत्र से शुरू करना चाहिए। ऐसा करने से दूसरों को आपके कोड को बेहतर तरीके से पढ़ने में मदद मिलेगी।

+1

+1 लेआउटमेनर्स का उपयोग करना एक अच्छी सिफारिश है। – Jonas

+0

मैंने अपना लेआउट ग्रिडलेआउट – anvd

+0

@ फ़ेल में बदल दिया है जो उत्कृष्ट है – jzd

0

पेंटेल 5 पैनल जोड़ने से पहले दर्द 3 के लेआउट को शून्य पर सेट करें।

painel3.setLayout (शून्य); painel3.add (दर्द 5);

मैं लेआउटमेनर्स का उपयोग करने की सलाह देता हूं।

संबंधित मुद्दे