创建带下拉阴影的菜单,下拉阴影菜单,public class
分享于 点击 45278 次 点评:280
创建带下拉阴影的菜单,下拉阴影菜单,public class
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://byrx.net
用户点评