java下拉菜单栏代码_java 创建带下拉阴影的菜单

[java]代码库public class CustomPopupMenuUI extends BasicPopupMenuUI {

public static ComponentUI createUI(JComponent c) {

return new CustomPopupMenuUI();

}

public Popup getPopup(JPopupMenu popup, int x, int y) {

Popup pp = super.getPopup(popup,x,y);

JPanel panel = (JPanel)popup.getParent();

panel.setBorder(new ShadowBorder(3,3));

panel.setOpaque(false);

return pp;

}

}

class ShadowBorder extends AbstractBorder {

int xoff, yoff;

Insets insets;

public ShadowBorder(int x, int y) {

this.xoff = x;

this.yoff = y;

insets = new Insets(0,0,xoff,yoff);

}

public Insets getBorderInsets( Component c ) {

return insets;

}

public void paintBorder(Component comp, Graphics g,

int x, int y, int width, int height) {

g.setColor(Color.black);

g.translate(x,y);

// draw right side

g.fillRect(width-xoff, yoff, xoff, height-yoff);

// draw bottom side

g.fillRect(xoff, height-yoff, width-xoff, yoff);

g.translate(-x,-y);

}

}

public class MenuTest {

public static void main(String[] args) throws Exception {

UIManager.put("PopupMenuUI","CustomPopupMenuUI");

JFrame frame = new JFrame();

JMenuBar mb = new JMenuBar();

frame.setJMenuBar(mb);

JMenu menu = new JMenu("File");

mb.add(menu);

menu.add(new JMenuItem("Open"));

menu.add(new JMenuItem("Save"));

menu.add(new JMenuItem("Close"));

menu.add(new JMenuItem("Exit"));

menu = new JMenu("Edit");

mb.add(menu);

menu.add(new JMenuItem("Cut"));

menu.add(new JMenuItem("Copy"));

menu.add(new JMenuItem("Paste"));

menu.add(new JMenuItem("Paste Special.."));

frame.getContentPane().setLayout(new BorderLayout());

frame.getContentPane().add("North",new JButton("Button"));

frame.getContentPane().add("Center",new JLabel("a label"));

frame.getContentPane().add("South",new JCheckBox("checkbox"));

frame.pack();

frame.setSize(200,150);

frame.show();

}

}

//源代码片段来自云代码http://yuncode.net

694748ed64b9390909c0d88230893790.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值