예에서 GUI에 테이블을 추가 한 다음 진행률을 표시하기 위해 동적으로 행을 추가하려고합니다. 왜 모든 행이 한 번에 나타나는지 이해할 수 없습니다. 테이블이 바뀌고있는 것 아닌가요? 누군가 나에게 설명을 해줄 수 있습니까?JTable에 동적으로 행 추가 - 왜 한번에 나타 납니까?
import java.awt.Component;
public class Main {
public static void main(String[] args) {
// Show GUI
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
GUI gui = new GUI();
gui.setVisible(true);
DefaultTableModel model = new DefaultTableModel(
new String[] { "Column 1", "Column 2" }, 0);
JTable table = new JTable(model);
gui.add(table);
gui.validate();
for (int i = 0; i < 10; i++) {
System.out.println("Row " + i);
model
.addRow(new String[] { "Row", String.valueOf(i) });
// model.fireTableDataChanged();
try {
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}
}
class GUI extends JFrame {
private static final long serialVersionUID = 1L;
public GUI() {
setTitle("GUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 350, 100);
setLocationRelativeTo(null);
JPanel cp = new JPanel();
cp.setBorder(new EmptyBorder(10, 10, 10, 10));
setContentPane(cp);
}
}
EDT - ** never never ever ** – kleopatra
EDT는 Event Dispatch Thread의 약자입니다. 왜 이런 일이 일어나는 지 직관적으로 분명해야합니다. :) –
힌트를 주셔서 대단히 감사합니다. 예제를 업데이트했습니다. 나는 그것을 심지어 더 나쁘게 만들었 느냐?! :-) –