2012-10-28 2 views
2

jtable에서 셀의 데이터를 변경하려고합니다. 어떻게해야합니까? 다음 코드를 실행하면 오류가 발생합니다.Java JTable, 셀 데이터를 변경하는 방법 (텍스트 쓰기)?

JFrame f= new JFrame(); 
final JTable table= new JTable(10,5); 

TableModelListener tl= new TableModelListener(){ 
    public void tableChanged(TableModelEvent e){ 

    table.setValueAt("hello world",2,2); 
    } 
}; 

table.getModel().addTableModelListener(tl); 
f.add(table); 
f.pack(); 
f.setVisible(true); 

나는 아래에서도 이것을 시도했지만 여전히 작동하지 않습니다. 뭐라 구요? TableModelListener 내의 table.setValueAt() 호출

table.getModel().setValueAt("hello world",2,2); 
+0

정확히 무슨 뜻입니까? – kleopatra

+0

컴파일되지 않습니다. 내 문제는 간단합니다 : jtable 셀 값을 변경할 때 특정 셀을 편집하려면 – thecodefather

+0

다음 컴파일 오류를 먼저 수정하십시오. – kleopatra

답변

3

StackOverflowError 결과 무한히에 다시 소위되는 setValueAt() 방법 다음 호출하는 방법 tableChanged() 시킨다.

한 가지 해결책은 대신 CellEditorListener을 사용하는 것입니다. 이 example을 참조하십시오.

+0

이것은 내 문제를 해결하지 못합니다. jtable에 문제가 생기면 어떻게하면 셀에 쓸 수 있습니까? – thecodefather

+1

당신이'CellEditorListener'를 찾고 있다고 생각합니다. 위의 예에 대한 링크를 참조하십시오. – Reimeus

+1

'tableChanged'가 뭔가를 말하고 있습니다. – MadProgrammer

0

나에게 도움이되는 Rob Camick의 예를 사용할 수 있습니다. 또한이 클래스를 사용하여 이전 값과 새로운 값을 얻을 수 있습니다. Example!

또한 블로그의 끝 부분을 보시면 폼에 마지막으로 변경된 사항을 처리하기위한 이벤트로드 이벤트에 Addiional Code를 추가하는 내 게시물을 볼 수 있습니다.

MouseEvent me = new MouseEvent(tblDetailInfo, 0, 0, 0, 100, 100, 1, false); 
for(MouseListener ml: tblDetailInfo.getMouseListeners()){ 
ml.mouseClicked(me); } 
+0

미안하지만 이것은 내가 찾고있는 것이 아닙니다. 어느 한 쪽. 내 문제는 간단합니다. jtable 셀 값이 변경되면 특정 셀을 편집하려고합니다. – thecodefather