2015-01-05 2 views
0

Java 응용 프로그램에서 A, B 및 C와 같은 여러 콤보 상자가있는 대화 상자가 필요합니다. A는 A 항목이 선택되고 C가 채워지면 채워집니다. B가 채워지는 경우 기본 접근 방식을 알고 있습니다. 즉, Item.SELECTED에서 다음 상자를 채우는 A & B 수신기를 설정합니다.계단식 콤보 상자 자바

B 항목 목록의 길이가 1 일 때 수행해야 할 작업은 무엇입니까? 단일 항목으로는 선택 변경이 불가능하므로 C가 다시 채워지지 않습니다. 누군가 나에게 힌트를 줄 수 있습니까?

고마워요? 현재 노드에 형제 (같은 부모의 아이들)가없는 경우 트리의 각 수준에서 에드 S

답변

0

는 확인합니다. 이 경우 프로그래밍 방식으로 선택 이벤트를 발생시키고 현재 노드의 자식을로드합니다.

+0

어떻게하면됩니까? 내가 아는 유일한 방법은 프로그래밍 방식으로 선택 영역을 변경하는 것입니다. 단 하나의 항목 만있는 경우 변경할 부분이 없습니다. 내가 뭘 놓치고 있니? –

+0

죄송합니다. 귀하의 어려움을 이해할 수 없습니다. 어쨌든, 여러 가지 선택 사항이있는 경우에도이 문제를 처리해야합니다. 사용자가 기본값을 선택하면 어떻게 될까요? – Raffaele

+0

2 개 이상있는 경우 프로그래밍 방식으로 2를 선택하고 첫 번째를 선택할 수 있습니다. 단 하나의 아이템이 있다면 ... –

0

빈 항목을 B에 추가하는 것은 어떻습니까? 그리고 C는 빈 항목을 선택할 때 선택 변경 이벤트를 무시합니다.

+0

생각해보십시오. 그러나 더 좋은 방법이 있어야합니다. –

0

문제가 해결되었습니다. 내 문제는 상자를 초기화 할 때 DefaultComboBoxModel (rootboxitems)을 사용하여 초기화하면 항목 상태가 변경된다고 가정합니다. 그렇지 않습니다. 모든 후속 상자는 초기 채우기 이후 및 각 선택 변경 후에 업데이트되어야합니다. 이것은 각 상자의 갱신 코드를 별도의 기능에 두어 재사용 할 수 있다면 쉽게 수행 할 수 있습니다.

내가 고안 한 예는 Make, Model 및 Color의 세 가지 속성 (예 : "Ford", "Mustang", "Blue")을 기반으로하는 자동차 선택입니다. 각 Make는 여러 개의 모델을 가질 수 있으며 각 모델에는 고유 한 색상 목록이 있습니다.

대화 & 초기화는 다음과 같습니다

public CascadeGui(java.awt.Frame parent, boolean modal, Makes aMakes) { 
    super(parent, modal); 
    ArrayList<Make> makes; 
    Make selectedMake; 
    Model slectedModel; 
    initComponents(); 
    makes = aMakes.GetMakesArrayList(); 
    cboMakes.setModel(new javax.swing.DefaultComboBoxModel(makes.toArray(new Make[makes.size()]))); 
    selectedMake = (Make) cboMakes.getSelectedItem(); 
    cboModels.setModel(new javax.swing.DefaultComboBoxModel(selectedMake.GetModelsArray())); 
    slectedModel = (Model) cboModels.getSelectedItem(); 
    cboColors.setModel(new javax.swing.DefaultComboBoxModel(slectedModel.GetColorsArray())); 

} 

이 모든 속성의 초기 선택을 설정합니다. 차종 항목 상태 변경 이벤트 핸들러는 다음과 같습니다 당신이 볼 수 있듯이, 메이크업의 새로운 섹션이 모델 상자의 업데이트하고 색 상자가 발생합니다

private void cboMakesItemStateChanged(java.awt.event.ItemEvent evt) {           
    if (evt.getStateChange() == SELECTED) { 
     UpdateModelsCbo(); 
     UpdateColorsCbo(); 
    } 
}           

. 모델 선택 이벤트의 해당 코드는 다음과 같습니다

private void cboModelsItemStateChanged(java.awt.event.ItemEvent evt) {           
    if (evt.getStateChange() == SELECTED) { 
     UpdateColorsCbo(); 
    } 
}           

은 내가 넷빈즈는 예를 들어 파일을 압축 및/또는 질문에 대한 답변을 공유하게 기쁠 것이다. 동시에, 초보자 자바 프로그래머 중 한 명이되어, 개선을위한 의견 및 제안을 부탁드립니다.

ed

관련 문제