2010-08-13 6 views
2

요구 사항 : ComboBox에 표시되는 문자열 목록이 있습니다. 이러한 String 각각은 몇 가지 속성을 가질 수 있습니다. 이러한 속성은 PropertyTable에 표시됩니다. ComboBox에서 선택한 항목의 속성이 표에 표시됩니다. 또한 PropertyTable을 사용하여 comboBox에서 선택한 항목에 대한 속성 값을 편집하거나 설정합니다.JComboBox 및 JTable 연결

문제 : 새로운 속성 ITEM1하는 값으로 내가 콤보 상자 항목의 선택을 해제 순간, 는 항목 1 말의 PropertyTable에서 기존의 모든 속성 값이 설정됩니다. 다시이 item1을 선택하면 속성 값 (, 즉 item1이 선택 해제 된 값인)이 PropertyTable에 다시 있어야합니다.

현재 구현 로직 : I 셀의 내용이 변경 될 때마다 각 PropertyTableCell에 대한 TableCellListner을 데

, 그것은 셀의 새 값을 받아 콤보 상자의 선택 항목이 같은 새로운 속성 값을 할당합니다. 새 항목이 선택 될 때마다 테이블은 선택된 항목의 속성 값으로 새로 고쳐집니다.

//before is Table initialization code 

Action action = new AbstractAction() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     TableCellListener table = (TableCellListener)e.getSource(); 
     String selectedItem=(String)ComponentPropComboBox.getSelectedItem(); 
     if(table.getColumn()==1 && selectedItem!=null) 
     { 
      Property property=propertyMap.get(selectedItem); 

      else if(table.getRow()==0) 
      { 
       property.setProperty("MIN_LENGTH", (String)table.getNewValue()); 
       propertyMap.put(selectedItem, property); 
      } 

      else if(table.getRow()==1) 
      { 
       property.setProperty("STARTS_WITH_STRING", (String)table.getNewValue()); 
       propertyMap.put(selectedItem, property); 
      } 
      } 
    } 
}; 

TableCellListener tcl = new TableCellListener(PropertiesTable, action); 

어떻게 위의 도전을 극복하여이 요구 사항을 구현합니까?

PS : TableCellListner는 아니 자바 일반적인 라이브러리입니다. 당신은 다음 링크에서 코드와 그 설명을 볼 수 있습니다

내가 질문은 분명하다 생각! Pls 질문이 명확하지 않은 경우 알려주십시오. 사전에 도움을 주셔서 감사합니다 & 지식을 기증!

+2

좀 더 명확 할 수 있습니까? "요구 사항"은 분명하지만 원하는 것은 아닙니다. 테이블을 새로 고쳐야한다고 말합니까? 약간의 코드와 일부 스크린 리더가 도움이 될 것입니다 – Nivas

+0

코드에 실수가 있습니다. Property 선언 다음에 else가있는 경우, 그렇지 않은 경우 else가 있습니다. 만약에해야한다면 첫 번째가 아닌가? 그리고 Nivas에 동의합니다. 문제가 무엇인지 명확히 알지 못합니다. – I82Much

답변

1

JComboBox 선택을 수신하는 코드에서 처음에는 항목이 변경되고 있다는 부울을 설정했습니다. 그런 다음 테이블 새로 고침 코드를 사용하여 부울을 설정하는 동안 발생하는 이벤트를 무시하십시오. 새로 고침을 마치면 부울을 다시 설정하십시오.