现在遇到一个麻烦问题在一个面板上显示JPopMenu,要根据弹出菜单的大小来动态的改变弹出菜单的坐标。但如果菜单没有调用show方法时getWidth()和getHeight()得到的值都是空,请问如果在show方法前就得到JPopMenu的长和宽?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【loveyousomuch】截止到2008-06-25 16:42:39的历史汇总数据(不包括此帖):
    发帖数:8                  发帖分:550                
    结贴数:8                  结贴分:550                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    宽高也是外设的吧如果非要通过内置getter方式
    setVisible遮掩一下?
      

  3.   

    先调doLayout试试不行就调用setVisible(true)//这样可能就show出来了,试一下
    在不行我也没办法了
      

  4.   

    是不是实现跟在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);

    }
    }
      

  5.   

    刚刚试了先调用一下setVisible(true),然后就可以得到坐标了不过左上角菜单会出现一个白条,但下次就不会了
      

  6.   

    popupmenu.getPreferredSize()
    弹出来的菜单是根据这个尺寸来设置大小的
      

  7.   

    还在用show()?据说这个方法过时了,应当用setVisible(true)
      

  8.   

    调用pack()方法啊,JPopMenu也有这个方法的,
    这个应该行的.
      

  9.   

    pack和获得坐标有什么关系?他只是自动调整大小吧
      

  10.   

    可以连续调用两次:
    popMenu.show(component,{计算表达式},{计算表达式});
    popMenu.show(component,{计算表达式},{计算表达式});
    要注意的是计算表达式在两次调用时都要写,不能直接用变量代替,不然就起不到作用了:)
      

  11.   

    一般我在调试GUI程序的时候都是多次反复调试
    对于这么细小的要求,别人也只能为你反复调试才能给出答案
    :)
      

  12.   

    JPopupMenu 用的什么实现的, JWindow?
      

  13.   

    你用错了。应该是获取popupMenu.getPreferredSize().width;getwith()是获取JComponent的bound中的width属性。不显示时bound不更新的