2013-09-27 3 views
0

Было трудно добавить JPanels в JFrame. Я очень много нового на java, всегда использовал C++ Мне нужно сделать 4 панели внутри одного кадра.Добавить несколько JPanels в JFrame

Вот мой код, только начали сегодня ..

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

Ошибка вашего кода, потому что вы добавляете непосредственно к JFrame, которые по умолчанию имеют BorderLayout. Вы устанавливаете 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 (новый BoxLayout()); – Rafa579

+0

@ user2802861 см. Мое редактирование – nachokk

+0

СПАСИБО! Я люблю тебя: P jiji edit..no homo. Я просто разочаровывался. – Rafa579

Смежные вопросы