java点击按钮出现下拉菜单,java按钮下拉菜单

MyMenuButton类(自己做的按钮)

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JPopupMenu; import javax.swing.JToggleButton; import javax.swing.SwingConstants; public class MyMenuButton extends JToggleButton{ private JPopupMenu menu; private static int i=0; public MyMenuButton(){ super(); this.setText("▲"); this.setHorizontalTextPosition(SwingConstants.RIGHT ); addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { if(isSelected()){ setText("▼"); menu.show(MyMenuButton.this, 0, MyMenuButton.this.getHeight()); }else{ setText("▲"); menu.setVisible(false); } } }); } public MyMenuButton(final String label){ super(label); this.setText("▲ "+label); this.setHorizontalTextPosition(SwingConstants.RIGHT ); addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { if(isSelected()){ setText("▼"+label); menu.show(MyMenuButton.this, 0, MyMenuButton.this.getHeight()); }else{ setText("▲"+label); menu.setVisible(false); } } }); } public void addMenu(JPopupMenu menu){ this.menu=menu; } }

Test类(测试类)

import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JPopupMenu; public class Test extends JFrame{//测试类 public Test(){ JPanel p=new JPanel(); //创建弹出菜单 JPopupMenu menu=new JPopupMenu(); menu.add("第一个菜单项"); menu.add("第二个菜单项"); menu.add("第三个个菜单项"); menu.add("第四个菜单项"); MyMenuButton button=new MyMenuButton();//创建按钮 MyMenuButton button2=new MyMenuButton("按钮菜单"); //把建好的菜单放到按钮上 button.addMenu(menu); button2.addMenu(menu); p.add(button); p.add(button2); this.add(p); this.setSize(300, 200); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { new Test(); } }[2009-09-06补充: 该文章只解决了combo下拉框被遮盖的问题,但是如果选择como的某项,或者点击下拉菜单就会自动隐藏menu 请移步查看后续文章:   ExtJS Menu嵌套com

结果如图:

VrQnma.gif

jEZzam.gif

Vb6buq.gif

注释:可以根据需求进行修改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值