From 1f699b0ee325dc5b550b0b9393cf519c3f8626d9 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Thu, 28 Dec 2017 11:10:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-6186=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E6=B7=BB=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=97=EF=BC=8C=E7=AC=AC=E4=B8=80=E6=AC=A1=E7=82=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=97=E4=B8=8B=E6=8B=89=E6=A1=86=EF=BC=8C?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=BC=9A=E8=87=AA=E5=8A=A8=E6=94=B6=E5=9B=9E?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E5=86=8D=E6=AC=A1=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=89=8D=E8=83=BD=E9=80=89=E6=8B=A9=E6=95=B0=E6=8D=AE=E5=88=97?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/dscolumn/SelectedDataColumnPane.java | 13 ++++++++++++- .../com/fr/design/gui/icombobox/LazyComboBox.java | 9 +++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index bb52b766c3..0c3f9ad9c8 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -26,6 +26,7 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; +import javax.swing.SwingWorker; import javax.swing.DefaultComboBoxModel; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -262,7 +263,17 @@ public class SelectedDataColumnPane extends BasicPane { tableNameComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - columnNameComboBox.setLoaded(false); + if (e.getStateChange() == ItemEvent.SELECTED) { + new SwingWorker() { + + @Override + protected Void doInBackground() throws Exception { + columnNameComboBox.loadInstant(); + return null; + } + + }.execute(); + } } }); 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 From 742aaf4a1b0ab81cc965778e173f1c71da9867a4 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Thu, 28 Dec 2017 12:34:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?REPORT-6186=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E6=B7=BB=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=97=EF=BC=8C=E7=AC=AC=E4=B8=80=E6=AC=A1=E7=82=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=97=E4=B8=8B=E6=8B=89=E6=A1=86=EF=BC=8C?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=BC=9A=E8=87=AA=E5=8A=A8=E6=94=B6=E5=9B=9E?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E5=86=8D=E6=AC=A1=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=89=8D=E8=83=BD=E9=80=89=E6=8B=A9=E6=95=B0=E6=8D=AE=E5=88=97?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/dscolumn/SelectedDataColumnPane.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index 0c3f9ad9c8..4a269baab5 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -26,7 +26,6 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; -import javax.swing.SwingWorker; import javax.swing.DefaultComboBoxModel; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -38,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; /** @@ -260,19 +261,19 @@ 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) { if (e.getStateChange() == ItemEvent.SELECTED) { - new SwingWorker() { - + executorService.execute(new Runnable() { @Override - protected Void doInBackground() throws Exception { - columnNameComboBox.loadInstant(); - return null; + public void run() { + synchronized (columnNameComboBox) { + columnNameComboBox.loadInstant(); + } } - - }.execute(); + }); } } });