2010-02-20 2 views
0

Я хочу добавить JCombobox на панель во время выполнения, у меня нет идеи об этом, поэтому, пожалуйста, если у вас есть какие-либо идеи об этом, предложите мне.Как добавить новый компонент в панель во время выполнения

+0

Можете ли вы быть более конкретным о том, что именно вы пытаетесь сделать? Вы обеспокоены временем выполнения и временем компиляции? Или вас просто интересует добавление JComboBox к панели? – akf

ответ

1

Я предполагаю, что вы хотите добавить комбинированный блок к компоненту, который уже находится на экране. Просто добавьте компонент в соответствующий Container и вызовите метод Containervalidate. Вот небольшой пример для этого:

import java.awt.Dimension; 
import java.awt.event.ActionEvent; 

import javax.swing.AbstractAction; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Application { 

    private static final String[] choices = { "One", "Two", "Three" }; 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     final JPanel content = new JPanel(); 
     content.setPreferredSize(new Dimension(50, 200)); 
     content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS)); 
     JButton addButton = new JButton(new AbstractAction("Add Combobox") { 

      private static final long serialVersionUID = 1L; 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       content.add(new JComboBox(choices)); 
       content.validate(); 
      } 
     }); 

     frame.add(content); 
     content.add(addButton); 
     frame.pack(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 

Хотя я использовал кадр только для этого примера, он должен также работать на JPanel.

+3

Я использую метод Swing revalidate() вместо метода AWT validate(). – camickr

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