请问Java Swing菜单栏的JMenu menu怎么给他加上鼠标经过时出现圆角矩形边框,同时去掉原有的深灰色底色。

像这样的

myMenu.setBackground(Color.white);// 设置背景色
myMenu.setBorder(myRoundBorder); // 设置一个边框

 给菜单项添加鼠标侦听,当mouse enter和exit时重新设置背景和边框。

圆角边框需要自己实现一个,不难,给你个参考:

class MyRoundBorder implements Border {
  int arc=12; 
  @Override
  public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
   g.drawRoundRect(x + 1, y + 1, width - 1, height - 1, arc, arc);
  }
  @Override
  public Insets getBorderInsets(Component c) {
   return null;
  }
  @Override
  public boolean isBorderOpaque() {
   return false;
  }
 }

追问

    请问创建好了这个MyRoundBorder之后,怎么不能调用它。非得final一个静态的值为null才不会报错。但是这样做了没有一点效果。创建了鼠标监听,依然不能调用这个MyRoundBorder,而鼠标监听中menu1.setBorder(MyRoundBorder);MyRoundBorder出现红色波浪线

  

追答

在class MyRoundBorder 前面加上static 关键字,将其变为静态类。

MyRoundBorder是正常的,这是个类,你需要实例化,在机子的panel中new一个:

MyRoundBorder myRoundBorder=new MyRoundBorder();

追问

好的 ,我试试看。感谢了,如果还是不行的话我再请教你咯。

温馨提示:答案为网友推荐,仅供参考