[java]按钮JButton问题(图形按钮、按钮不显示、鼠标滑过才显示、显示位置错误等)——form:菜鸟理解


问题起源

我呢,是一名目前还在纠结毕业设计的苦逼学生。之前壮志凌云,许下:“自己的毕设要自己写”的豪情壮志。还为了防止重题,直接避开了“连连看”、“推箱子”这种网上有对照的题目,选了个“四顶棋”这个小时候玩的游戏,而且网上丝毫没有相关资料。连这个“四顶棋”的名字,都不知道是不是这个游戏的本名!
以上均是废话,往下看吧。

按钮显示位置错误(按钮充满整个窗体)

如果是将按钮添加进窗体JFrame中

//JFrame代码:
setBounds(500,0,500,500);     //设置窗体大小以及显示位置
JButton jbutton = new JButton("示例");        //创建按钮实例对象
add(jbutton);       //向窗体中加入按钮

运行结果:
在这里插入图片描述
可以看到,整个窗体都是按钮。

这是窗体布局的问题,窗体默认布局为边界布局(BorderLayout),所以才是这个样子。可以将布局设置为流式布局即可。

//JFrame代码
setLayout(new FlowLayout());        //设置布局为流式布局
setBounds(500,0,500,500);     //设置窗体大小以及显示位置
JButton jbutton = new JButton("示例");        //创建按钮实例对象
add(jbutton);       //向窗体中加入按钮

运行结果:

在这里插入图片描述

还可以将布局设置为null,也就是不需要布局。这样,你添加进的所有组件均需要手动设置其位置及大小。

//JFrame代码
setLayout(null);        //设置没有布局
setBounds(500,0,500,500);     //设置窗体大小以及显示位置
JButton jbutton = new JButton("示例");        //创建按钮实例对象
jbutton.setBounds(0,0,100,100);		//设置按钮位置及大小
add(jbutton);       //向窗体中加入按钮

运行结果:

在这里插入图片描述

按钮的添加位置

我做这个游戏时,曾遇到这个问题:按钮到底是放在面板中,还是窗体中?
经过我大量实验,得出应该放在面板中

以下是菜鸟我的理解:

  • 窗体是最基本的框架,代表我们看到的这个窗口。
  • 面板是这个窗口的每个页面。

而我们的按钮以及其他控件虽然可以放在窗体上,但是这是建立在你没有面板的情况下。
如果有了面板,你会发现:面板会将按钮挡住!

所以我的程序,所有按钮均添加在面板中。

按钮只有在鼠标滑过才显示

这个问题是困扰我很久的一个问题。查阅了很多资料,以及各种博客。最后得出了我的解决办法:

我遇到的问题是:
按钮添加在面板中,有两个按钮。但是每次都只会显示第一个按钮,第二个需要鼠标滑过去才显示
而且如果点击面板的其他地方,所有按钮都会消失
此时鼠标滑过又会显示出来

原因: 面板的绘制,挡住了按钮

  • 当点击面板时,会触发面板的重绘
  • 而按钮的显示没有在重绘的进程中

解决办法: 将按钮获取焦点的方法放在面板的重绘代码中

//JPanel代码
public void paintComponent(Graphics g) {
//按钮重新获取焦点
startButton.requestFocus();
tableButton.requestFocus();
}
  • 36
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值