JComboBox向上弹出

 

主要就是重载JComboBox里的firePopupMenuWillBecomeVisible方法,使其改变它的弹出行为

 

下面为示例代码:

MainFrame.java

package com.futuredial.MyApplet;

 

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

import netscape.javascript.*;

 

public class MainFrame extends JApplet

{

 

  JComboBoxEx box;

  public MainFrame()

  {

        

  }

  public void init()

  {

        box = new JComboBoxEx();

        

     Container   c   =   getContentPane();  

     c.setLayout(null);  

     Rectangle rc = c.getBounds();

     box.setBounds(new   Rectangle(0,   rc.height-30,   100,   rc.height+10));

     box.addItem("1");

     box.addItem("2");

     box.addItem("3");

     box.addItem("4");

     add(box);

     

  }

}

 

重新派生出来的JComboBoxEx.java

package com.futuredial.MyApplet;

import javax.swing.*;

import javax.swing.plaf.basic.*;

 

public class JComboBoxEx extends JComboBox

{

       public JComboBoxEx()

       {

        super();

    }

 

       public void firePopupMenuWillBecomeVisible()

       {

              int maxHight = 0;

        BasicComboPopup comboPopup = (BasicComboPopup)getUI().getAccessibleChild(this, 0);

        maxHight = comboPopup.getHeight();

        if (maxHight == 0)

        {

               maxHight = comboPopup.getPreferredSize().height;

        }

        comboPopup.setLocation(getLocationOnScreen().x, getLocationOnScreen().y - maxHight);

        super.firePopupMenuWillBecomeVisible();

    }

 

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值