Browse Source

REPORT-817 条件属性字体颜色没法选择设置

master
vito 8 years ago
parent
commit
1d3dfbebed
  1. 39
      designer_base/src/com/fr/design/style/AbstractPopBox.java

39
designer_base/src/com/fr/design/style/AbstractPopBox.java

@ -9,6 +9,7 @@ import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.AWTEventListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
@ -35,25 +36,16 @@ public abstract class AbstractPopBox extends JPanel {
showPopupMenu();
}
public void mouseExited(MouseEvent evt) {
int x= evt.getXOnScreen();//mac和widows的计算结果还不一样
int y = evt.getYOnScreen();
if (selectPopupWindow != null) {
Rectangle rectangle = selectPopupWindow.getBounds();
boolean b1 = x < rectangle.x - GAP || x > rectangle.x + rectangle.width + GAP;
boolean b2 = y < rectangle.y - GAP || y >rectangle.y + rectangle.height + GAP;
if(b1 || b2) {
hidePopupMenu();
};
AWTEventListener awt = new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
if (event instanceof MouseEvent) {
MouseEvent evt = (MouseEvent) event;
if (evt.getClickCount() > 0) {
mouseClick(evt);
}
// if (OperatingSystem.isWindows()) {
//
// }else{
// Point pp = SwingUtilities.convertPoint(evt.getComponent(), evt.getPoint(), selectPopupWindow.getParent());
// Rectangle rectangle = selectPopupWindow.getBounds();
// if (pp.getY() < rectangle.getY() || pp.getY() > rectangle.getY() + rectangle.getHeight()) {
// //hidePopupMenu();
// }
// }
}
}
};
@ -67,6 +59,7 @@ public abstract class AbstractPopBox extends JPanel {
if (!this.isEnabled()) {
return;
}
Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK);
selectPopupWindow = this.getControlWindow();
@ -83,7 +76,7 @@ public abstract class AbstractPopBox extends JPanel {
y = y - selectPopupWindow.getHeight() - GAP2;// 超过屏幕高度了
}
if(width > screenSize.width) {
if (width > screenSize.width) {
x = screenSize.width - selectPopupWindow.getWidth();
}
selectPopupWindow.setLocation(x, y);
@ -105,9 +98,10 @@ public abstract class AbstractPopBox extends JPanel {
private void mouseClick(MouseEvent evt) {
int x = evt.getLocationOnScreen().x;
int y = evt.getLocationOnScreen().y;
Rectangle popBoxRect = AbstractPopBox.this.getBounds();
Rectangle rectangle = this.getControlWindow().getBounds();
boolean b1 = x < rectangle.x || x > rectangle.x + rectangle.width;
boolean b2 = y < rectangle.y || y > rectangle.y + rectangle.height;
boolean b2 = y < rectangle.y - popBoxRect.height || y > rectangle.y + rectangle.height;
if (b1 || b2) {
this.hidePopupMenu();
}
@ -119,6 +113,7 @@ public abstract class AbstractPopBox extends JPanel {
}
selectPopupWindow = null;
Toolkit.getDefaultToolkit().removeAWTEventListener(awt);
}
protected JWindow getControlWindow() {
@ -152,6 +147,7 @@ public abstract class AbstractPopBox extends JPanel {
/**
* 添加事件
*
* @param changeListener 事件
*/
public void addSelectChangeListener(ChangeListener changeListener) {
@ -160,6 +156,7 @@ public abstract class AbstractPopBox extends JPanel {
/**
* 删除事件
*
* @param changeListener 事件
*/
public void removeSelectChangeListener(ChangeListener changeListener) {
@ -180,6 +177,7 @@ public abstract class AbstractPopBox extends JPanel {
/**
* 待说明
*
* @param background 背景
*/
public void fireDisplayComponent(Background background) {
@ -192,6 +190,7 @@ public abstract class AbstractPopBox extends JPanel {
/**
* 初始化弹出框的面板
*
* @param preWidth 宽度
* @return 弹出面板
*/

Loading…
Cancel
Save