GUI编程中的JButton组件,当鼠标移动到其上面时,按钮显示出边框,能否去掉?

llzlucky 2007-07-29 01:29:00
GUI编程中的JButton组件,当鼠标移动到其上面时,此JButton按钮会显示出边框(但愿我的表达够清楚,有点像是得到了焦点),能否去掉?
...全文
714 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
llzlucky 2007-08-03
  • 打赏
  • 举报
回复
zwgs1985(流氓狗)大虾,多谢!我的你的仰慕有如长江之水,连绵不绝,又有如黄河之水,泛滥成灾。
其实用setBorder(new EmptyBorder(0, 0, 0, 0));就可以解决我的问题了。setBorder(null);效果也一样。
在这里讲一下我的一点教训,我是在一个Frame中应用了一个GridLayout,然后再加上的JButton。之所以出现我在上文中提到的“横向的按钮之间倒是没问题,纵向的按钮之间没有边界”这个问题,是因为我给窗口增加了菜单,去掉菜单就没有这个问题了。也许我应该把JButton加到Panel里,然后再加到Frame里,这样大概没问题,还没有试呢。
另外我实现扫雷的边框效果的方法是利用图像,而不是设置边框。在Windows里的扫雷程序中提取出图像的资源,然后应用到程序中的。
zwgs1985 2007-08-02
  • 打赏
  • 举报
回复
扫雷?那就是这效果了

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);
}
}
llzlucky 2007-08-02
  • 打赏
  • 举报
回复
不好意思,好像setBorder有点管用。本人的程序是把几行几列的按钮放在一个GridLayout布局管理器里,使用了setBorder后,横向的按钮之间倒是没问题,纵向的按钮之间没有边界了,还请zwgs1985(流氓狗) 大虾不吝赐教。
llzlucky 2007-07-31
  • 打赏
  • 举报
回复
setUI与setBorder完全不管用。修改paint方法,操作过程中出现大量的出错信息,本人无法解决,于是把paint方法中只加入一条打印语句,发现完全没有被调动。?
其实本人是想编写一个小游戏的扫雷程序,把鼠标移动到按钮上,有个边框的话,那么跟windows里带的扫雷相差太多了呀。
zwgs1985 2007-07-31
  • 打赏
  • 举报
回复
setBorder(new EmptyBorder(0, 0, 0, 0));
djsl6071 2007-07-30
  • 打赏
  • 举报
回复
估计无法在该类中作修改,因为外观是托管的,也就是在look and feel里面设计的,改那边的才有用。
chenweionline 2007-07-30
  • 打赏
  • 举报
回复
jButton.setUI(new BasicButtonUI());
kulatasana 2007-07-30
  • 打赏
  • 举报
回复
要修改显示外观,有多种途径,并非只有laf一条路可走哦~
kulatasana 2007-07-30
  • 打赏
  • 举报
回复
如果只是希望不显示边框,我给你出个主意!
写个累,extends JButton,然后重载其paint方法,方法内容完全copy自JComponent之中,只需要去掉其中两个调用paintBorder的地方即可,这样你的Border就完全画不出来了^_^

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧