2012-06-02 3 views
1

My JTable에 나열된 몇 개의 행이 있습니다. getselectedRow()를 호출 할 때 처음으로 정확한 결과를 제공하지만 이후에는 항상 -1을 반환합니다.getSelectedRow 메서드를 on으로 설정하면 일관된 결과가 반환되지 않습니다.

getSelectedRow()에 대한 첫 번째 호출 후 선택한 행을 삭제할 때 테이블을 새로 고치려고하면이 문제가 발생한 것 같습니다. 테이블 새로 고침 코드를 제거하면 다시 잘 작동합니다.

테이블을 새로 고치는 경우 먼저 내가

model.getDataVector().removeAllElements(); 

를 호출 내가 처음으로, 즉 데이터베이스를 타격 및 모델에 행을 삽입하는 것처럼 그 후 나는 테이블을 다시 빌드합니다.

내가해야 할 사항이 있습니까?

+0

행을 다시 모델로, 행을 선택하려면'setRowSelectionInterval()'또는 다른 것을 호출합니까? –

+1

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

@RobI 현재이 종류의 일을하고 있지는 않습니다. 그렇게하는 것이 좋습니다? –

답변

3

처음으로 getselectedRow()를 호출하면 올바른 결과를 얻지 만 이후에는 항상 -1이 반환됩니다.

  • JTable가 선택한 임의의 행이

당신이 코드를 실행하기 전에 if (table.getSelectedRow() != -1) {을 테스트해야 비어 아니라고 경우 만 가능하다

+0

이것은 좋은 제안입니다 :-), 이것은 또한 결함이 어디에 있는지에 대한 좋은 테스트 근거를 제공 할 것입니다. –

+0

나는 이미이 일을하고 있으며 위에서 언급 한 두 가지 가능성도 갖고 있지 않다. 테이블에서 테이블을 제거한 후에 행을 볼 수 있고 그 행에 대해 의심의 여지가 있으므로 테이블이 비어 있지 않다. –

+0

EDT에서 JTable 및 해당 이벤트를 호출해야합니다. TableModel의 데이터를 하드 코딩하고 표준 코드를 사용하여 제거한 다음 스윙 타이머에서 지연 시간을 설정하고 다시 하드 코딩 된 데이터를 모델에 다시 추가합니다. 이벤트 스윙 타이머 감소 EDT가 부족하다. – mKorbel

관련 문제