📄 jfcutilities.java
字号:
/*** $Id: JFCUtilities.java,v 1.4 2001/05/07 12:34:45 kunugi Exp $**** Copyright (c) 2000-2001 Jeff Gay** on behalf of ICEMail.org <http://www.icemail.org>** Copyright (c) 1998-2000 by Timothy Gerard Endres**** This program is free software.**** You may redistribute it and/or modify it under the terms of the GNU** General Public License as published by the Free Software Foundation.** Version 2 of the license should be included with this distribution in** the file LICENSE, as well as License.html. If the license is not** included with this distribution, you may find a copy at the FSF web** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.**** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR** REDISTRIBUTION OF THIS SOFTWARE.*/package org.icemail.util;import java.awt.Component;import java.awt.Dimension;import java.awt.Point;import java.awt.Toolkit;import java.awt.event.MouseEvent;import javax.swing.JPopupMenu;import javax.swing.border.Border;import javax.swing.border.CompoundBorder;import javax.swing.border.EtchedBorder;import javax.swing.border.EmptyBorder;/** * This is a class that contains useful utility functions related * to the JFC (Swing). */public class JFCUtilities{ public static final Border StandardBorder = new CompoundBorder( new EmptyBorder( 4, 4, 4, 4 ), new CompoundBorder( new EtchedBorder( EtchedBorder.RAISED ), new EmptyBorder( 4, 4, 4, 4 ) ) ); /** * Swing 1.0 and 1.1 have a horrible bug with respect to popup menus. * Namely that they are not adjusted to be kept on-screen. * Here, we ensure that the popup is properly located. * This method will continue to work even after Sun fixes Swing... * However, because there is a case where we estimate the size of * the popup menu, one could make the argument to noop this method * when the bug is finally fixed. */ static public Point computePopupLocation( MouseEvent event, Component rel, JPopupMenu popup ) { Dimension psz = popup.getSize(); Dimension ssz = Toolkit.getDefaultToolkit().getScreenSize(); Point gLoc = rel.getLocationOnScreen(); Point result = new Point( event.getX(), event.getY() ); gLoc.x += event.getX(); gLoc.y += event.getY(); if ( psz.width == 0 || psz.height == 0 ) { // DRAT! Now we need to "estimate"... int items = popup.getSubElements().length; psz.height = ( items * 22 ); psz.width = 100; } psz.height += 5; if ( (gLoc.x + psz.width) > ssz.width ) { result.x -= (( gLoc.x + psz.width) - ssz.width); if ( (gLoc.x + result.x) < 0 ) result.x = -(gLoc.x + event.getX()); } if ( (gLoc.y + psz.height) > ssz.height ) { result.y -= (( gLoc.y + psz.height) - ssz.height); if ( (gLoc.y + result.y) < 0 ) result.y = -gLoc.y; } return result; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -