2010-02-20 4 views
0

런타임시 패널에 JCombobox를 추가하고 싶습니다. 이에 대한 아이디어가 없으므로 제게이 제안에 대해 생각해보십시오.런타임에 패널에 새 구성 요소를 추가하는 방법

+0

당신이하고 싶은 일에 대해 좀 더 구체적으로 설명해 줄 수 있습니까? 런타임 대 컴파일 시간이 걱정 되십니까? 또는 JComboBox를 패널에 추가하는 데 관심이 있습니까? – akf

답변

1

이미 화면에있는 구성 요소에 콤보 상자를 추가한다고 가정합니다. 구성 요소를 적절한 Container에 추가하고 Containervalidate 메서드로 호출하면됩니다.

I는이 예를 들어 프레임을 사용하고 있지만
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

AWT validate() 메서드 대신 Swing revalidate() 메서드를 사용합니다. – camickr

관련 문제