1

저는 SwingWorker를 사용하여 데이터베이스의 변경에 따라 DefaultTableModel을 변경합니다. 내 질문은 : ListSelectionListener 및 TableModelListener를 doInBackground()의 DefaultTableModel에 추가하는 것이 안전합니까? 아니면 done()에 추가해야합니까?Listener를 DefaultTableModel에 추가하기

답변

3

어떤 방식 으로든 GUI 구성 요소를 수정하는 모든 동작 은 EDT에서 수행해야합니다.done에 리스너를 추가해야합니다.

+3

+1 [Swing Worker docs에 따라] (http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#publish (V ...))'DefaultTableModel 'SwingUtilities.invokeXXX' 블록을 필요로하지 않고 모든 Swing 컴포넌트는'process (..) '내에서 수정/추가 될 수 있습니다. –

+1

@DavidKroukamp ['process'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#process (java.util.List)) 메소드는 EDT이므로 청취자를 추가하는 것은 완벽합니다. – Jeffrey