요구 사항 : 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는 아니 자바 일반적인 라이브러리입니다. 당신은 다음 링크에서 코드와 그 설명을 볼 수 있습니다
- http://www.camick.com/java/source/TableCellListener.java
- http://tips4java.wordpress.com/2009/06/07/table-cell-listener/
내가 질문은 분명하다 생각! Pls 질문이 명확하지 않은 경우 알려주십시오. 사전에 도움을 주셔서 감사합니다 & 지식을 기증!
좀 더 명확 할 수 있습니까? "요구 사항"은 분명하지만 원하는 것은 아닙니다. 테이블을 새로 고쳐야한다고 말합니까? 약간의 코드와 일부 스크린 리더가 도움이 될 것입니다 – Nivas
코드에 실수가 있습니다. Property 선언 다음에 else가있는 경우, 그렇지 않은 경우 else가 있습니다. 만약에해야한다면 첫 번째가 아닌가? 그리고 Nivas에 동의합니다. 문제가 무엇인지 명확히 알지 못합니다. – I82Much