GUI编程中的JButton组件,当鼠标移动到其上面时,此JButton按钮会显示出边框(但愿我的表达够清楚,有点像是得到了焦点),能否去掉?

解决方案 »

  1.   

    估计无法在该类中作修改,因为外观是托管的,也就是在look and feel里面设计的,改那边的才有用。
      

  2.   

    如果只是希望不显示边框,我给你出个主意!
    写个累,extends JButton,然后重载其paint方法,方法内容完全copy自JComponent之中,只需要去掉其中两个调用paintBorder的地方即可,这样你的Border就完全画不出来了^_^
      

  3.   

    要修改显示外观,有多种途径,并非只有laf一条路可走哦~
      

  4.   

    jButton.setUI(new BasicButtonUI());
      

  5.   

    setBorder(new EmptyBorder(0, 0, 0, 0));
      

  6.   

    setUI与setBorder完全不管用。修改paint方法,操作过程中出现大量的出错信息,本人无法解决,于是把paint方法中只加入一条打印语句,发现完全没有被调动。?
    其实本人是想编写一个小游戏的扫雷程序,把鼠标移动到按钮上,有个边框的话,那么跟windows里带的扫雷相差太多了呀。
      

  7.   

    不好意思,好像setBorder有点管用。本人的程序是把几行几列的按钮放在一个GridLayout布局管理器里,使用了setBorder后,横向的按钮之间倒是没问题,纵向的按钮之间没有边界了,还请zwgs1985(流氓狗) 大虾不吝赐教。
      

  8.   

    扫雷?那就是这效果了import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.CompoundBorder;
    import javax.swing.border.EmptyBorder;public class TestFrame extends JFrame { /**
     * 
     */
    private static final long serialVersionUID = -5312488161764152418L; public TestFrame() {
    super();
    this.init();
    } private void init() {
    JPanel panel = new JPanel();
    JButton label = new JButton("button");
    label.setBorder(new CompoundBorder(new EmptyBorder(0, 0, 0, 0),
    new BevelBorder(0)));
    panel.add(label);
    this.getContentPane().add(panel);
    } public static void main(String[] args) {
    TestFrame t = new TestFrame();
    t.pack();
    t.setVisible(true);
    t.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    }
      

  9.   

    zwgs1985(流氓狗)大虾,多谢!我的你的仰慕有如长江之水,连绵不绝,又有如黄河之水,泛滥成灾。
    其实用setBorder(new EmptyBorder(0, 0, 0, 0));就可以解决我的问题了。setBorder(null);效果也一样。
    在这里讲一下我的一点教训,我是在一个Frame中应用了一个GridLayout,然后再加上的JButton。之所以出现我在上文中提到的“横向的按钮之间倒是没问题,纵向的按钮之间没有边界”这个问题,是因为我给窗口增加了菜单,去掉菜单就没有这个问题了。也许我应该把JButton加到Panel里,然后再加到Frame里,这样大概没问题,还没有试呢。
    另外我实现扫雷的边框效果的方法是利用图像,而不是设置边框。在Windows里的扫雷程序中提取出图像的资源,然后应用到程序中的。