在Java程序,如何实现自适应位置的快捷菜单
2002-05-02 10:29
1381 查看
做界面时,常用到快捷菜单(JPopupMenu), 可JPopupMenu本身没办法根据鼠标位置来自动调整菜单位置使全部菜单可见,为此我专门写了一个可自适应位置的快捷菜单,代码如下:
import javax.swing.*;
import java.awt.*;
/**
* <p>Copyright: Copyright (c) 2002</p>
* @author Turbo Chen
* @version 1.01
*/
public class CJPopupMenu extends JPopupMenu
{
public void show(Component invoker,int x, int y)
{
Point ps = invoker.getLocationOnScreen();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int mw = this.getPreferredSize().width;
int mh = this.getPreferredSize().height;
int newX = x;
int newY = y;
int aX = ps.x+x+mw;
int aY = ps.y+y+mh;
if ( aX>d.width )
newX = x -(aX - d.width);
if ( aY>d.height )
newY = y -(aY - d.height);
super.show(invoker,newX,newY);
}
}
这个类重载了public void show(Component invoker,int x, int y)方法来实现自适应位置功能.
import javax.swing.*;
import java.awt.*;
/**
* <p>Copyright: Copyright (c) 2002</p>
* @author Turbo Chen
* @version 1.01
*/
public class CJPopupMenu extends JPopupMenu
{
public void show(Component invoker,int x, int y)
{
Point ps = invoker.getLocationOnScreen();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int mw = this.getPreferredSize().width;
int mh = this.getPreferredSize().height;
int newX = x;
int newY = y;
int aX = ps.x+x+mw;
int aY = ps.y+y+mh;
if ( aX>d.width )
newX = x -(aX - d.width);
if ( aY>d.height )
newY = y -(aY - d.height);
super.show(invoker,newX,newY);
}
}
这个类重载了public void show(Component invoker,int x, int y)方法来实现自适应位置功能.
相关文章推荐
- 为已有的Java图形程序增加储存WMF矢量文件功能
- Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)
- 如何在Java应用程序中实现copy图像功能。
- SJEA考试阅读列表
- java版本的escape和unescape函数
- 利用Java 编写手机应用程序 Motorola iDEN篇
- Inside Java2 SDK Source Internal 深入Java2 SDK原始码(一) Java2 SDK原始码概观
- Java 2 Micro Edition简介(四)
- Java 2 Micro Edition简介(三)
- Java 2 Micro Edition简介(二)
- SMTH Java FAQ (4) 2D作图以及文字处理
- JAVA版hello world全攻略
- CODE工成长之路1---菜鸟JAVA学习篇
- 基于Java IDL的分布式程序设计
- 浅谈C# vs Java (1)
- Java Scoket
- 手机上开发动画
- 对于初学者学习Java语言的建议[教学]
- Enterprise JavaBeans 介绍(一):EJB 种类介绍
- Compressing and Decompressing Data using JavaTM APIs