2016-05-19 4 views
0

У меня проблема, когда я добавляю jpanel в существующий jpanel!Как добавить jpanel в jpanel в java

Я хочу jlist в центре loction и jbuttom на юге!

Я вижу jlist, но jbuttom не будет отображаться!

Я использую версию Eclipse 3.0.

это мой код:

package classes; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Font; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 
import java.util.LinkedList; 

import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JTabbedPane; 

public class JPanelDecorator extends JPanel implements ActionListener 
{ 
    private static final long serialVersionUID = 1L; 
    private JList<String> list = null; 
    private JButton Change=null; 

    public JPanelDecorator() 
    { 
     super(); 
     setLayout(new BorderLayout());  
     setSize(450 ,400); 
     String animals_list[] = new String[AquaPanel.swims.size()]; 
     LinkedList<Swimmable> ir = new LinkedList<Swimmable>(AquaPanel.swims); 
     for(int i=0;i<ir.size();i++) 
     { 
      animals_list[i]=(i+1+". "+ir.get(i).toString()); 
     } 

     list = new JList<String>(animals_list); 
     list.setFont(new Font("Tahoma",Font.BOLD,15)); 
     list.setSize(450, 300); 
     add(list,BorderLayout.CENTER); 

     Change = new JButton("Change Color"); 
     Change.addActionListener(this); 
     add(Change,BorderLayout.CENTER); 
     repaint(); 
    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 


    } 

} 

, пожалуйста, помогите!

+1

Возможный дубликат [JPanel внутри другого JPanel] (http://stackoverflow.com/questions/23398214/ jpanel-inside-another-jpanel) – LoreV

+0

Eclipse 3.0 - ** двенадцать ** лет! –

+0

@ greg-449, работающий в офисе 3.4.2, (Flash Builder 4.0). Netbeans 6.9.1, выпуск 2010 года. Это не всегда возможно обновить программное обеспечение ... все еще на java 6 здесь. – AxelH

ответ

1

У вас есть тонкая ошибка. В конструкторе JPanelDecorator у вас есть:

public JPanelDecorator() 
{ 
    //.... 
    add(list,BorderLayout.CENTER); 
    //... 
    add(Change,BorderLayout.CENTER); // center again... 
    //... 
} 

Но что вам нужно это:

public JPanelDecorator() 
{ 
    //.... 
    add(list,BorderLayout.CENTER); 
    //... 
    add(Change,BorderLayout.SOUTH); // south 
    //... 
}