我们知道这将在非Swing线程中调用,因为该事件是直接在LookupManager中触发的,这将不是在Swing线程中执行。因为所有的代码功能上都是异步的(我们不必等待监听器方法允许结束后才调用其它代码),我们可以通过SwingUtilities.invokeLater()将这些代码改道到Swing线程。下面是新的方法,传入一个匿名Runnable到SwingUtilities.invokeLater(): public void lookupCompleted(final LookupEvent e) { //notice the threading SwingUtilities.invokeLater( new Runnable() { public void run() { outputTA.setText(""). String[] results = e.getResults(). for (int i = 0. i