java的扫雷程序的一些问题

我正在做一个扫雷游戏问题1:某些按钮上只有一个数字但是这个按钮要足够大才能显示出这些数字来否则就会变成"..."我尝试改变字体大小不过好像变得更难用多次尝试发现按钮的内容... 我正在做一个扫雷游戏
问题1:
某些按钮上只有一个数字
但是这个按钮要足够大才能显示出这些数字来 否则就会变成 "..."
我尝试改变字体大小不过好像变得更难用
多次尝试发现 按钮的内容 的四周总是有一大片空白 就像是 居中 表示(显然浪费空间)
我想让整个数字充斥整个按钮(至少利用率大一些) 这样也多利用空间
我想让size这么大

不过要调整到这么大

才看得见上面的数字

如果不是用按钮做 那是用什么做?

问题2:
有没有办法改变按钮的大小 且 设置成绝对大小

问题3:
有待补充
展开
 我来答
未来需努力点缀
2013-05-18 · TA获得超过4679个赞
知道大有可为答主
回答量:850
采纳率:50%
帮助的人:517万
展开全部

楼主你好


(问题1)

lz说改变字体的大小有问题  这个应该不会这样的   改变字体(Font)是可以的

给lz一个例子:

import java.awt.*;
import javax.swing.*;
public class Test extends JFrame{
    private JLabel[] num = new JLabel[100];
       
    public Test(){
        super("改变字体大小");
        setLayout(new GridLayout(10,10));
        for (int i = 0; i < num.length; i++) {
            num[i] = new JLabel("" + (i+1));
            num[i].setFont(new Font("宋体", Font.PLAIN, 10));
            //这里如果不设置字体大小  那么数字100就不能显示
            getContentPane().add(num[i]);
        }
           
        setLocation(200,200);
        setSize(200,200);
        setVisible(true);
        setResizable(false);
        setDefaultCloseOperation(3);
    }
    public static void main (String[] args) {
        new Test();
    }
}
   


(问题2)

你使用的应该是GridLayout这个布局管理器吧

那么在使用了java自带的布局管理器后  大多数都是不能修改这个布局管理器下的组件的大小和位置

如果你非要自己定义组件的大小  那么就只能不使用布局管理器了(setLayout(null))

在不使用布局管理器的情况下可以自由设置组件的大小的位置  但是这样很麻烦


希望能帮助你哈

追问
你这个是标签的
你做成按钮的试试
你会发现 数字 只占整个按钮界面的一小部分(利用率很低)
要把按钮拉得很大 数字才能看得见 而且 数字还是很相对按钮来说比较小的
追答
的确  用JButton有一定的局限性

我想了一个办法 不使用任何组件 直接在自定义面板上绘制雷的个数

以下是代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JFrame implements ActionListener{
private JButton[] button = new JButton[100];
private MyPanel panel;

public Test(){
super("扫雷");
setUndecorated(true);
setLocation(200,200);
setSize(300,300);

panel = new MyPanel(getSize());

panel.setLayout(new GridLayout(10,10));
for (int i = 0; i < button.length; i++) {
button[i] = new JButton();
button[i].addActionListener(this);

panel.add(button[i]);
}

getContentPane().add(panel);

setVisible(true);
setResizable(false);
setDefaultCloseOperation(3);
}

public void actionPerformed(ActionEvent e){
for (int i = 0; i < button.length; i++) {
if(e.getSource() == button[i]){
button[i].setVisible(false);
break;
}
}
}

public static void main (String[] args) {
new Test();
}
}

//自定义面板类
class MyPanel extends JPanel{
private Dimension screen;

public MyPanel(Dimension s){
screen = s;
}

//在这里实现将雷的个数绘制好 我这里为了简便起见 就是绘制的1~100的整数
public void paintComponent(Graphics g){
super.paintComponent(g);
int index=0 , x , y;

for (int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++){
x = screen.width * j / 10;
y = screen.height * (i+1) / 10;

g.drawLine(x,0,x,screen.height);
g.drawLine(0,y,screen.width,y);

if(index < 9){
x += 9;
}
else if(index < 99){
x += 7;
}
else{
x += 5;
}
g.drawString(""+(++index), x, y-9);
}
}
}
}

(1)优点: 效果要比使用JButton好些
(2)不足: 雷个数的绘制位置需要自行设定(不过也就是简单的坐标运算 作为程序员 这个不算什么的)
匿名用户
2013-05-18
展开全部
字体太大。

一可以缩小字体、一可以自己绘上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式