2013-09-27 114 views
0

將JPanels添加到JFrame很困難。在Java上我幾乎是新的,總是使用C++ 我需要在一個幀內做4個面板。向JFrame添加多個JPanels

這裏是我的代碼,今天剛開始..

package project2; 
import javax.swing.JOptionPane;  
import java.awt.FlowLayout; 
import javax.swing.JFrame;  
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingConstants; 
import java.awt.Color; 
import java.awt.GridLayout; 
import java.awt.BorderLayout; 
import javax.swing.*; 
import java.awt.Container; 
import java.awt.Dimension; 

public class GUI extends JFrame 
{ 
    private JPanel Checks; //Panel to Hold Checks 
    private JPanel Transactions; 
    private JPanel History; 
    private JPanel Graphics; 
    private JLabel CLabel; 


    public GUI() 
    { 
     super ("UTB Check-In"); 
     JPanel Checks = new JPanel(); //set up panel 
     CLabel = new JLabel("Label with text"); 
     Checks.setBackground(Color.red); 
     Checks.setLayout(new BoxLayout(Checks,BoxLayout.LINE_AXIS)); 
     add(Checks); 


     // JPanel Transactions = new JPanel(); 
     // Transactions.setToolTipText("Electronic Transactions"); 
     //Transactions.setBackground(Color.blue); 
     // add(Transactions); 

    } 

} 

我試圖把交易和檢查一邊與其他具有不同的顏色,在這種情況下,藍色和紅色它不停留在中間位置它那一個或那個。 我的一位同事告訴我,BoxLayout(或任何佈局)需要與大小...實現的東西擴展。我真的不知道我一直在讀 http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html

但我仍然不完全明白。如果有人能幫我出 謝謝!

回答

2

您的代碼失敗會導致您直接添加到默認爲BorderLayoutJFrame。您正在將BoxLayout設置爲錯誤的面板。 您必須將setLayout()添加到您要添加的頂層組件(jframe),或者我更願意將其添加到jpanel中,而不是直接添加到jframe以實現您想要執行的操作。

例子:

public GUI() 
{ 
    super ("UTB Check-In"); 

    JPanel parent = new JPanel(); 
    parent.setLayout(new BoxLayout(parent,BoxLayout.LINE_AXIS)); 
    add(parent); 

    JPanel Checks = new JPanel(); //set up panel 
    CLabel = new JLabel("Label with text"); 
    Checks.setBackground(Color.red); 
    parent.add(Checks); 


    JPanel Transactions = new JPanel(); 
    Transactions.setToolTipText("Electronic Transactions"); 
    Transactions.setBackground(Color.blue); 
    parent.add(Transactions); 

} 

順便說一句,在Java中的變量與小寫字母作爲代碼約定開始。

+0

nachokk,感謝您的回覆。它給我「沒有合適的構造函數」parent.setLayout(new BoxLayout()); – Rafa579

+0

@ user2802861看到我的編輯 – nachokk

+0

謝謝!我愛你:P jiji edit..no homo。我只是感到沮喪嘿嘿 – Rafa579