2012-03-02 4 views
0

주어진 값 중 하나에 따라 jtextfield를 콤보 박스에 표시하려고합니다.JCombobox 및 JTextfield

이렇게 1에서 4까지의 드롭 다운 메뉴가 있습니다. 사용자가 3을 선택하면 3 개의 텍스트 필드가 표시됩니다. 나는 숫자의 선택과 함께 jcombobox를 만들었습니다. 그러나 이것을 구현하는 방법을 모르겠습니다. 내가 잘못 본게 아니라면 난 내가 JComboBox에의있는 ItemListener 객체에 사용할 수있을 것 JTextField를 개체에 대한 참조를 만들 필요가 있다고 생각

ItemEvent.SELECTED 

를 사용해야합니다.

도움을 주시면 감사하겠습니다.

나는 내 수업이 추가되었습니다 :

// aOption is the combobox I declared 
aOptionComboBox.setModel(new DefaultComboBoxModel(new String[]{"1","2","3"})); 

public void itemStateChanged(ItemEvent event) { 

    String num = (String)aOptionComboBox.getSelectedItem(); 
    int num1 = Integer.parseInt(num); 
    JTextField[] textfields = new JTextField[num1]; 

    for (int i = 0; i < num1; i++) 
    { 
     textfields[i] = new JTextField("Field"); 
     getContentPane().add(textfields[i]); 
     textfields[i].setBounds(200, 90, 100, 25); 

    } 
} 

가 나는 바른 길에 무엇입니까?

+0

"올바른 위치에 있습니까?"* 코드가'setBounds'를 사용한다면 아마 그렇지 않을 것입니다. *** 레이아웃 사용 ***. 또한 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

당신이 그것을 시도했을 때 일어난 일 :-) 힌트 : 이전에 추가 된 필드를 제거하고 싶을 수도 있습니다. 또한 숙제 인 경우 – kleopatra

+1

"올바른 위치에 있습니까?"라고 대답하십시오. 그 대답은 틀림없이 잘못된 길입니다. for 루프 내부에서 @AndrewThompson에 의해 매우 충고 된대로 ** setBounds **를 사용하지 마십시오. 그러나 만약 당신이 여전히 그것을 사용하고 있다면, 당신이 만들고있는'JTextFields'가 다른 곳에 똑같은 위치에 놓여 있지는 않은지 생각해보십시오. 그러면 JFrame에 얼마나 많은 사람들이 있는지를 어떻게 알 수 있을까요? –

답변

1

콤보 상자에서 getSelectedItem()을 사용하십시오. 이렇게하면 문자열 또는 정수가 반환됩니다 (구현 방법에 따라 다름). 다음 for 루프를 사용하여 JTextField의 양을 결정하고 배열에 저장하십시오.

int amount = myJComboBox.getSelectedItem(); 

JTextField[] textfields = new JTextField[amount]; 

for (int i = 0; i < amount; i++) { 
textfields[i] = new JTextField("awesome"); 
this.add(textfields[i]); 
} 

이렇게하면 텍스트 필드를 쉽게 저장하고 패널에 추가 할 수 있습니다.

몇 가지 추가 정보.

textfield-array는 eventListener 외부에서 액세스 할 수 있어야하므로 클래스에 구현해야합니다. 전체 클래스가 그것을 사용할 수있는 방법.

+0

나는 내 수업이 추가되었습니다 : 공공 무효은 (는 ItemEvent 이벤트)의 itemStateChanged { 은/* aOption 내가 aOptionComboBox.setModel (새 된 DefaultComboBoxModel를 선언 콤보가 (새로운 String [] { "1", " 2 ","3 "})); */ 문자열 num = (문자열) aOptionComboBox.getSelectedItem(); int num1 = Integer.parseInt (num); JTextField [] textfields = 새 JTextField [num1]; for (int i = 0; i nothingme

+0

@noneme 질문에 해당 코드를 편집하고 코드 서식을 사용하십시오. 지금은 읽을 수 없습니다. –