2010-02-20 69 views
0

我想在運行時將JCombobox添加到面板,我不知道這一點,所以如果您對此有任何想法,請告訴我。如何在運行時向面板添加新組件

+0

你可以更具體地說明你想要做什麼?你關心運行時間還是編譯時間?或者你只是想將JComboBox添加到面板? – akf 2010-02-20 11:47:55

回答

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 2010-02-20 16:20:28