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();

}

}

结果如图:

0_1270897190HDPL.gif

0_12708972100lzo.gif

0_1270897275088h.gif

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值