From fa6105a7b43dde8fa060fc7cb42fa6deac9b203b Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 14 Nov 2017 14:50:12 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-5489=20@Plough=EF=BC=9A9.0=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E4=BA=A4=E4=BA=92=E9=AA=8C=E6=94=B6=3D>?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=9D=A2=E6=9D=BF=E4=B8=AD=EF=BC=8C=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E7=A9=BA=E7=99=BD=E5=8C=BA=E5=9F=9F=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E6=9C=80=E5=90=8E=E4=B8=80=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/controlpane/UIListControlPane.java | 19 +++++++++--- .../com/fr/design/gui/ilist/UINameEdList.java | 30 ++++++++++++++++--- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java index cd8b48d41..d6c1a3432 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java @@ -37,10 +37,7 @@ import javax.swing.event.ListDataListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; +import java.awt.event.*; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; @@ -805,6 +802,20 @@ public abstract class UIListControlPane extends UIControlPane { evt.getY() - 1); } + @Override + public void mouseClicked(MouseEvent e) { + JList list = (JList) e.getSource(); + if (list.locationToIndex(e.getPoint()) == -1 && !e.isShiftDown() + && !isMenuShortcutKeyDown(e)) { + list.clearSelection(); + } + } + + private boolean isMenuShortcutKeyDown(InputEvent event) { + return (event.getModifiers() & Toolkit.getDefaultToolkit() + .getMenuShortcutKeyMask()) != 0; + } + @Override public void mouseMoved(MouseEvent e) { diff --git a/designer_base/src/com/fr/design/gui/ilist/UINameEdList.java b/designer_base/src/com/fr/design/gui/ilist/UINameEdList.java index 3ab1a58c6..6ce185506 100644 --- a/designer_base/src/com/fr/design/gui/ilist/UINameEdList.java +++ b/designer_base/src/com/fr/design/gui/ilist/UINameEdList.java @@ -12,10 +12,7 @@ import javax.swing.*; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import java.awt.*; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; +import java.awt.event.*; import java.util.ArrayList; import java.util.Vector; @@ -352,6 +349,17 @@ public class UINameEdList extends UIList implements CellEditorListener { repaint(cellRect); } + @Override + public int locationToIndex(Point location) { + int index = super.locationToIndex(location); + if (index != -1 && !getCellBounds(index, index).contains(location)) { + return -1; + } + else { + return index; + } + } + /** * 主函数 * @@ -375,6 +383,20 @@ public class UINameEdList extends UIList implements CellEditorListener { list.editItemAt(list.getSelectedIndex()); } } + + @Override + public void mouseClicked(MouseEvent e) { + JList list = (JList) e.getSource(); + if (list.locationToIndex(e.getPoint()) == -1 && !e.isShiftDown() + && !isMenuShortcutKeyDown(e)) { + list.clearSelection(); + } + } + + private boolean isMenuShortcutKeyDown(InputEvent event) { + return (event.getModifiers() & Toolkit.getDefaultToolkit() + .getMenuShortcutKeyMask()) != 0; + } }) ;