2012-10-03 14 views
7

पर 2 या अधिक ऑब्जेक्ट्स जोड़ना मैं जेएफआरएएम पर 2 ऑब्जेक्ट्स प्रदर्शित करना चाहता हूं। मैंने जेपीनल में ऑब्जेक्ट्स जोड़कर कोशिश की और फिर जेपीनेल को जेएफआरएएम में जोड़ा लेकिन यह भी काम नहीं किया। मैंने गेंद और बॉल 1 ऑब्जेक्ट्स को सीधे जेएफआरएएम में जोड़ने की कोशिश की लेकिन यह केवल अंतिम जोड़ा ऑब्जेक्ट दिखाता है। मैं एक समय में दोनों वस्तुओं को जेएफआरएएम पर दिखाना चाहता हूं। नीचे दिया गया कोड केवल ball1 ऑब्जेक्ट दिखाता है।जेएफआरएएम

JFrame f = new JFrame("Moving"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    //making 2 objects 
    Ballbewegung2 ball = new Ballbewegung2(); 
    Ballbewegung3 ball1 = new Ballbewegung3(); 
    JPanel contentPane = new JPanel(new BorderLayout()); 
    JPanel contentPane1 = new JPanel(new BorderLayout()); 

    //adding objects to JPanel 
    contentPane.add(ball, BorderLayout.CENTER);     
    contentPane1.add(ball1, BorderLayout.CENTER);     

    //Adding JPanel to JFrmae 
    f.getContentPane().add(contentPane); 
    f.getContentPane().add(contentPane1); 
    f.setSize(500, 500); 
    f.setVisible(true); 

उत्तर

4

JFrame की सामग्री फलक डिफ़ॉल्ट रूप से BorderLayout लेआउट प्रबंधक है। इसका मतलब है कि यदि आप इसमें कोई घटक जोड़ते हैं, तो इसे केंद्र में रखा जाएगा। यदि आप इसमें एक और घटक जोड़ते हैं, तो यह फिर से केंद्र में डाल दिया जाएगा और यह पहले जोड़े गए घटक को प्रतिस्थापित करेगा।

कई घटकों को जोड़ने का तरीका एक उदाहरण:

JFrame f = new JFrame(); 

JPanel p = new JPanel(); 

p.add(new JButton("One")); 
p.add(new JButton("Two")); 

f.getContentPane().add(p, BorderLayout.CENTER); 

या जहां यह डाल करने के लिए (और निर्दिष्ट विभिन्न स्थानों) जब सामग्री फलक को एक घटक जोड़ने, निर्दिष्ट करें:

JFrame f = new JFrame(); 

f.getContentPane().add(new JButton("One"), BorderLayout.NORTH); 
f.getContentPane().add(new JButton("Two"), BorderLayout.CENTER); 
+0

मैं वस्तुओं के लिए जहां वे shown.I भी कोशिश की है दूसरी विधि हैं के लिए अलग निर्देशांक दे रहा हूँ, यह अभी भी पहली वस्तु अधिलेखित कर देता है। – user1717353

+0

गलत, आप 'f.getContentPane()' को दो अलग-अलग घटकों से गुजरते हैं, लेकिन बाधाओं को निर्दिष्ट किए बिना। और बॉर्डरलाउट के साथ एक पैनल स्पष्ट रूप से निर्दिष्ट बाधाओं के बिना घटक को केंद्र स्थिति में जोड़ देगा, दूसरा वाला पहला स्थान बदल देगा। – icza

5

मेरा सुझाव है कि आप अपने जेपीनल दोनों को बच्चों के रूप में रखने के लिए जेपीनल का उपयोग करें, और जेएफआरएएम सामग्री फलक में एक जेपीनल जोड़ें।

JFrame.add() विधि के लिए दूसरी कॉल पहले जोड़े गए जेपीनल को प्रतिस्थापित करेगी, यदि आप स्पष्ट रूप से एक अलग लेआउट स्थान निर्दिष्ट नहीं करते हैं।

BoxLayout का उपयोग कर एक साधारण उदाहरण के रूप अनुसरण कर रहे हैं Java Components

कोड

JPanel mainPanel= new JPanel(); 
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); 

mainPanel.add(contentPane); 
mainPanel.add(contentPane1); 
contentPane.add(mainPanel); 
+0

जब मैं जेएफआरएएम पर 1 से अधिक बटन जोड़ता हूं तो यह कोड अच्छी तरह से काम करता है लेकिन यह मेरी कक्षाओं की वस्तुओं के साथ काम नहीं कर रहा है। मैंने 3 जेपीनल का उपयोग करने की कोशिश की है और फिर मुख्य पैनल को जेएफआरएएम में जोड़ दिया है लेकिन फिर भी वही आउटपुट है। – user1717353

1

यहाँ की तरह इस्तेमाल किया इस

UI

जावा घटकों यूआई कुछ प्राप्त करने के लिए एक उदाहरण है :

// Call this function from the main 
private static void createAndShowGUI() { 
    // Create and set up the content pane. 
    MainPanel panel = new MainPanel(); 
    panel.setOpaque(true); // content panes must be opaque 

    // Display the window. 
    JFrame frmConsole = new JFrame("ITSME"); 
    frmConsole.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frmConsole.setPreferredSize(new Dimension(640, 480)); 
    frmConsole.add(panel); 
    frmConsole.pack(); 
    frmConsole.setLocationRelativeTo(null); 
    frmConsole.setVisible(true); 
} 

कक्षा MainPanel

public class MainPanel extends JPanel implements ActionListener { 
    private static final long serialVersionUID = 1L; 
    private int m_nX, m_nY; 
    private int m_nHeight = 30, m_nWidthLabel = 500, m_nPadding = 2; 

    private JLabel m_lblFilename, m_lblFileGen; 

    public MainPanel() { 
     // TODO Auto-generated constructor stub 
     super(new BorderLayout()); 
     try { 
      this.setLayout(null); 
      this.setBorder(new TitledBorder(new EtchedBorder(), 
       "Dynamic Time Warping")); 

      m_nX = this.getX() + 12; 
      m_nY = this.getY() + 24; 

      // Add the Filename Label 
      m_lblFilename = new JLabel("Label1"); 
      m_lblFilename.setBorder(new LineBorder(Color.BLUE, 2)); 
      m_lblFilename.setBounds(nX, nY, m_nWidthLabel, m_nHeight); 
      this.add(m_lblFilename); 

      // Adding a Label 
      nY += m_lblFilename.getHeight() + m_nPadding; 
      m_lblFileGen = new JLabel("Label1"); 
      m_lblFileGen.setBorder(new LineBorder(Color.RED, 2)); 
      m_lblFileGen.setBounds(nX, nY, m_nWidthLabel, 3 * m_nHeight); 
      m_lblFileGen.setForeground(Color.BLUE); 
      this.add(m_lblFileGen); 
     } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
संबंधित मुद्दे