关于取得JPopMenu大小的问题,懂得来。 现在遇到一个麻烦问题在一个面板上显示JPopMenu,要根据弹出菜单的大小来动态的改变弹出菜单的坐标。但如果菜单没有调用show方法时getWidth()和getHeight()得到的值都是空,请问如果在show方法前就得到JPopMenu的长和宽? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【loveyousomuch】截止到2008-06-25 16:42:39的历史汇总数据(不包括此帖):发帖数:8 发帖分:550 结贴数:8 结贴分:550 未结数:0 未结分:0 结贴率:100.00% 结分率:100.00% 敬礼! 宽高也是外设的吧如果非要通过内置getter方式setVisible遮掩一下? 先调doLayout试试不行就调用setVisible(true)//这样可能就show出来了,试一下在不行我也没办法了 是不是实现跟在windows桌面角落右击似的啊, private void thisMouseClicked(MouseEvent evt) { if(evt.getButton() == MouseEvent.BUTTON3){ int popWidth = this.jPopupMenu1.getWidth(); System.out.println(popWidth); int popHeight = this.jPopupMenu1.getHeight(); System.out.println(popHeight); int showX = evt.getX(); int showY = evt.getY(); if(evt.getX()+popWidth >= this.WIDTH){ showX = evt.getX()-popWidth; } if(evt.getY()+popHeight >= this.HEIGHT){ showY = evt.getY()-popHeight; } this.jPopupMenu1.show(this,showX,showY); } } 刚刚试了先调用一下setVisible(true),然后就可以得到坐标了不过左上角菜单会出现一个白条,但下次就不会了 popupmenu.getPreferredSize()弹出来的菜单是根据这个尺寸来设置大小的 还在用show()?据说这个方法过时了,应当用setVisible(true) 调用pack()方法啊,JPopMenu也有这个方法的,这个应该行的. pack和获得坐标有什么关系?他只是自动调整大小吧 可以连续调用两次:popMenu.show(component,{计算表达式},{计算表达式});popMenu.show(component,{计算表达式},{计算表达式});要注意的是计算表达式在两次调用时都要写,不能直接用变量代替,不然就起不到作用了:) 一般我在调试GUI程序的时候都是多次反复调试对于这么细小的要求,别人也只能为你反复调试才能给出答案:) JPopupMenu 用的什么实现的, JWindow? 你用错了。应该是获取popupMenu.getPreferredSize().width;getwith()是获取JComponent的bound中的width属性。不显示时bound不更新的 [200分]用java程序开发一个编辑器,如何使编辑的文字内容高亮显示 请高手留一"邮编区号查询系统"源程序谢谢 请教,关于输入输出的问题 编了一个动画程序,老出现错误,请教高手! 想用JAVA做开源软件的同志进来看看! 怎样把string转成double(不是Double类)?(在线等待) 网页中的<form>可以和Applet交互吗? 随机数问题 学习<Think in Java>第2章的问题,欢迎大家讨论。 java发布时提交给客户的是一个个jar么? Java虚拟机崩溃,什么原因? 用户权限控制系统如何设计???分不够就加!!!
楼主【loveyousomuch】截止到2008-06-25 16:42:39的历史汇总数据(不包括此帖):
发帖数:8 发帖分:550
结贴数:8 结贴分:550
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
setVisible遮掩一下?
在不行我也没办法了
private void thisMouseClicked(MouseEvent evt) {
if(evt.getButton() == MouseEvent.BUTTON3){
int popWidth = this.jPopupMenu1.getWidth();
System.out.println(popWidth);
int popHeight = this.jPopupMenu1.getHeight();
System.out.println(popHeight);
int showX = evt.getX();
int showY = evt.getY();
if(evt.getX()+popWidth >= this.WIDTH){
showX = evt.getX()-popWidth;
}
if(evt.getY()+popHeight >= this.HEIGHT){
showY = evt.getY()-popHeight;
}
this.jPopupMenu1.show(this,showX,showY);
}
}
弹出来的菜单是根据这个尺寸来设置大小的
这个应该行的.
popMenu.show(component,{计算表达式},{计算表达式});
popMenu.show(component,{计算表达式},{计算表达式});
要注意的是计算表达式在两次调用时都要写,不能直接用变量代替,不然就起不到作用了:)
对于这么细小的要求,别人也只能为你反复调试才能给出答案
:)