|
|
|
@ -387,31 +387,35 @@ public final class GUICoreUtils {
|
|
|
|
|
* @param y y坐标 |
|
|
|
|
*/ |
|
|
|
|
public static void showPopupMenu(JPopupMenu popup, Component parentComponent, int x, int y) { |
|
|
|
|
if (popup == null) {// check null.
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Point point = new Point(x, y); |
|
|
|
|
SwingUtilities.convertPointToScreen(point, parentComponent); |
|
|
|
|
|
|
|
|
|
Dimension size = popup.getPreferredSize(); |
|
|
|
|
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); |
|
|
|
|
screen.setSize(screen.getSize().width, screen.height - HEIGHT_GAP); |
|
|
|
|
|
|
|
|
|
int showOnScreenX = Math.min(screen.width, parentComponent.getLocationOnScreen().x + parentComponent.getWidth()); |
|
|
|
|
|
|
|
|
|
// peter:调整X的高度.
|
|
|
|
|
if (point.x + size.width > showOnScreenX && size.width < showOnScreenX) { |
|
|
|
|
x += (showOnScreenX - point.x - size.width); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// peter:调整y高度.
|
|
|
|
|
if (point.y + size.height > screen.height && size.height < screen.height) { |
|
|
|
|
y -= size.height; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
popup.show(parentComponent, x, y); |
|
|
|
|
} |
|
|
|
|
if (popup == null) {// check null.
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Point point = new Point(x, y); |
|
|
|
|
SwingUtilities.convertPointToScreen(point, parentComponent); |
|
|
|
|
|
|
|
|
|
Dimension size = popup.getPreferredSize(); |
|
|
|
|
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); |
|
|
|
|
screen.setSize(screen.getSize().width, screen.height - HEIGHT_GAP); |
|
|
|
|
//父元素右边界的坐标
|
|
|
|
|
int parentComponentRightBorderPosition = parentComponent.getLocationOnScreen().x + parentComponent.getWidth(); |
|
|
|
|
//设计器右边界的坐标
|
|
|
|
|
Rectangle rectangle = DesignerContext.getDesignerFrame().getBounds(); |
|
|
|
|
int designerRightBorderPosition = rectangle.x + rectangle.width; |
|
|
|
|
rectangle = SwingUtilities.getWindowAncestor(parentComponent).getBounds(); |
|
|
|
|
designerRightBorderPosition = Math.max(designerRightBorderPosition, rectangle.x + rectangle.width); |
|
|
|
|
// peter:调整X的高度.
|
|
|
|
|
if (point.x + size.width > designerRightBorderPosition && size.width < designerRightBorderPosition) { |
|
|
|
|
x += (parentComponentRightBorderPosition - point.x - size.width); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// peter:调整y高度.
|
|
|
|
|
if (point.y + size.height > screen.height && size.height < screen.height) { |
|
|
|
|
y -= size.height; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
popup.show(parentComponent, x, y); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set enabled.<br> |
|
|
|
|