2013-06-19 3 views
0

내 코드가 제대로 작동하지 않는 이유가 무엇인지 모르겠지만 수정하기가 쉽지만 페이지에서 입력을 받고 싶다. 선택한 항목을 캐스팅 할 수 없다는 오류가 발생한다. 이 경우 개체에 열이 감사JTable 및 MySQL 문제

+0

필자는 열에 'DVDItem'의 값이나 속성이 있다고 가정합니다. 대신, 행의 표현에 대한 모델을 요청해야하며 이것은 사용중인 테이블 모델의 유형에 따라 결정됩니다. – MadProgrammer

+0

나는 이해하지 못합니다. 논리적으로는 전체 값을 전달하는 것이 합리적입니다. 행을 객체에 연결하지만 어떻게 처리할까요? –

+0

원본 테이블 모델은 어떻게 구성 되었습니까? 기본적으로,'TableModel'은 행 정의 방법에 대한 가정을하지 않습니다. – MadProgrammer

답변

2

나는 논리적으로 말은 그것을 만들고, 그것의 키에 액세스하여 삭제 한 후 DVDItem 객체로 변환 할 수 있도록

void delete() throws SQLException{ 
    int input = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete?", "Delete", JOptionPane.YES_NO_OPTION); 
    if (input == JOptionPane.YES_OPTION) { 
     DVDItem user = (DVDItem)tableDVD.getModel().getValueAt(tableDVD.getSelectedRow(), tableDVD.getSelectedColumn()); 
     mc.deleteItem(user.getkey()); 
    } 
    updateList(); 
} 

가 어떻게 그것을해야합니까 선택 객체에 대한 행의 전체 값을 전달하는 감각이 있지만 어떻게 할 수 있습니까?

DefaultTableModel에는 행의 모든 ​​열에 대해 개별 개체가 포함됩니다. 마술처럼 DVDItem을 만들 수는 없습니다. getValueAt() 메서드는 지정된 행/열의 Object를 반환합니다. 반환하는 Object는 모델에 추가 한 값에 따라 다릅니다.

DVDItem 개체를 모델에 추가하려면 사용자 지정 모델을 만들어야합니다. Bean Table Model을 확인하십시오. BeanTableModel을 그대로 사용하거나 두 가지 메소드를 구현하여 RowTableModel을 확장 할 수 있습니다. 너의 선택이야.

+0

클래스 DVDItem 4 문자열 구성 등의 int 각 JTA ble 열은 해당 값을 유지하므로 행을 선택하고 해당 필드를 모두 가져 와서 데이터베이스 테이블을 업데이트하기 위해 조작 할 수있는 DVDItem 객체를 만들려고합니다. 고집 스럽거나이 정보를 얻지 못해서 미안하지만 그냥 필요합니다. dvditem 객체를 다른 클래스에 전달하여 조작하십시오. 아마도 모든 사람들이 혼란스러워 할 것입니다. –

+0

그래서 모델에 DVDItem 객체를 저장하거나 만듭니다. 이것이 바로 RowTableModel이 설계 한 것입니다. 또는 DefaultTableModel을 사용하고 데이터를 별도의 필드로 저장합니다. 그런 다음 DVDItem을 만들려면 model.getValueAt (...)를 5 번 호출해야합니다. 선택한 행의 각 열에 하나씩. – camickr

+0

그래서 DVDItem은 행의 값 배열이됩니까? 나는 그것에게 당신에게 감사하는 시험을 줄 것이다! !! –