用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java 创建带下拉阴影的菜单

2015-01-05 作者: 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
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...