我遇到了java gui和打开文档的问题。我的问题是完整的gui挂起,直到文档打开,但我已经完成了操作......
我有这个动作监听器:
this.EditButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
String path = (String)DocumentsTable.getValueAt(DocumentsTable.getSelectedRow(), 2);
openDocument(path);
System.out.println("foo");
}
});
执行的操作只会打开给定的路径
private void openDocument(final String path){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try{
Desktop.getDesktop().open(new File(path));
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Das Dokument konnte nicht geöffnet werden...\n"+e.toString());
e.printStackTrace();
}
}
});
}
如果我运行我的程序,我会立即在控制台上看到“foo”,但gui完全挂断,按钮处于按下状态...... 有谁知道我做错了什么?我的其他动作听众也一样,我没有那个问题......
答案 0 :(得分:2)
SwingUtilities.invokeLater()
计划在EDT上运行runnable,如javadoc中所述。也许您应该使用SwingWorker
打开文档?