diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index bb52b766c3..4a269baab5 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -37,6 +37,8 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.regex.Pattern; /** @@ -259,10 +261,20 @@ public class SelectedDataColumnPane extends BasicPane { protected void initTableNameComboBox() { tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); + ExecutorService executorService = Executors.newSingleThreadExecutor(); tableNameComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - columnNameComboBox.setLoaded(false); + if (e.getStateChange() == ItemEvent.SELECTED) { + executorService.execute(new Runnable() { + @Override + public void run() { + synchronized (columnNameComboBox) { + columnNameComboBox.loadInstant(); + } + } + }); + } } }); tableNameComboBox.setPreferredSize(new Dimension(100, 20)); diff --git a/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java index 2d69c2fc83..43711b0118 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java +++ b/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java @@ -59,14 +59,11 @@ public abstract class LazyComboBox extends UIComboBox implements PopupMenuListen } /** - * 通过调用该方法,在点击下拉框按钮之前就加载好数据 + * 通过调用该方法,在点击下拉框按钮之前就加载好数据,不需要出现loading了 */ public void loadInstant() { - if (loaded) { - return; - } - setModel(new DefaultComboBoxModel(load())); - loaded = true; + setLoaded(true); + loadList(); } @Override