【问题标题】:Increasing Font Size in a JButton在 JButton 中增加字体大小
【发布时间】:2013-12-26 01:31:00
【问题描述】:

我不知道如何才能完成我的学期项目。我正在开发一个连接四游戏,我想增加 JButton 内的字体大小。我对编程比较陌生,我还没有使用过字体。我只想将按钮内部的字体至少翻倍,以使其在游戏过程中更加明显。有人可以帮助我,或者指出我找到解决方案的方向吗?谢谢!我的代码如下。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Connect implements ActionListener {





private JFrame window = new JFrame("Connect Four by Steven and Anthony");    
private JPanel myPanel = new JPanel();
private JPanel myPanelB = new JPanel();
private JButton[][] myButtons = new JButton[6][7];
private JButton[] buttons = new JButton[7];
private boolean win = false;

private int count = 5;
private int count2 = 5;
private int count3 = 5;
private int count4 = 5;
private int count5 = 5;
private int count6 = 5;
private int count7 = 5;
private int countA = 0;
private String letter = "";

public boolean checkHorizontalWin(String letter) {
for (int y = 0; y < myButtons.length; y++) {        
    for (int x = 0; x < myButtons[y].length - 3; x++) {
        if (myButtons[y][x].getText().equals(letter)
            && myButtons[y][x + 1].getText().equals(letter)
            && myButtons[y][x + 2].getText().equals(letter)
            && myButtons[y][x + 3].getText().equals(letter)
        ) {
            return true;
        }
    }
}
return false;
}


public boolean checkVerticalWin(String letter) {
    for (int y = 0; y < myButtons.length - 3; y++) {
        for (int x = 0; x < myButtons[y].length; x++) {
            if (myButtons[y][x].getText().equals(letter)
                && myButtons[y + 1][x].getText().equals(letter)
                && myButtons[y + 2][x].getText().equals(letter)
                && myButtons[y + 3][x].getText().equals(letter)
            ) {
                return true;
            }
        }
    }
    return false;
}


public boolean checkDiagonalToTheLeftWin(String letter) {
    for (int y = 0; y < myButtons.length - 3; y++) {
        for (int x = 0; x < myButtons[y].length - 3; x++) {
            if (myButtons[y][x].getText().equals(letter)
                && myButtons[y + 1][x + 1].getText().equals(letter)
                && myButtons[y + 2][x + 2].getText().equals(letter)
                && myButtons[y + 3][x + 3].getText().equals(letter)
            ) {
                return true;
            }
        }
    }
    return false;
}


public boolean checkDiagonalToTheRightWin(String letter) {
    for (int y = 0; y < myButtons.length - 3; y++) {
        for (int x = 3; x < myButtons[y].length; x++) {
            if (myButtons[y][x].getText().equals(letter)
                && myButtons[y + 1][x - 1].getText().equals(letter)
                && myButtons[y + 2][x - 2].getText().equals(letter)
                && myButtons[y + 3][x - 3].getText().equals(letter)
            ) {
                return true;
            }
        }
    }
    return false;
}



public Connect(){
    window.setSize(800,700);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myPanel.setLayout(new GridLayout(1,7));
    myPanelB.setLayout(new GridLayout(6,7));
    for (int i = 0; i < buttons.length; i ++){
        buttons[i] = new JButton();
        myPanel.add(buttons[i]);
        buttons[i].addActionListener(this);
    }
    for (int i = 0; i < 6; i ++){
        for (int j = 0; j < 7; j ++){
            myButtons[i][j] = new JButton();
            myPanelB.add(myButtons[i][j]);
        }
    }
    window.add(myPanel, BorderLayout.NORTH);
    window.add(myPanelB, BorderLayout.CENTER);
    window.setVisible(true);
}

public void actionPerformed(ActionEvent e){
    countA++;
    if (countA % 2 == 0)
        letter = "X";
    else
        letter = "O";



    if (e.getSource() == buttons[0]){
        myButtons[count][0].setText(letter);
        count --;
    }
    if (e.getSource() == buttons[1]){
        myButtons[count2][1].setText(letter);
        count2 --;
    }
    if (e.getSource() == buttons[2]){
        myButtons[count3][2].setText(letter);
        count3--;
    }
    if (e.getSource() == buttons[3]){
        myButtons[count4][3].setText(letter);
        count4--;
    }
    if (e.getSource() == buttons[4]){
        myButtons[count5][4].setText(letter);
        count5--;
    }
    if (e.getSource() == buttons[5]){
        myButtons[count6][5].setText(letter);
        count6--;
    }
    if (e.getSource() == buttons[6]){
        myButtons[count7][6].setText(letter);
        count7--;
    }
    if (myButtons[0][0].getText().equals("O") || myButtons[0][0].getText().equals("X")){
        buttons[0].setEnabled(false);
    }
    if (myButtons[0][1].getText().equals("O") || myButtons[0][1].getText().equals("X")){
        buttons[1].setEnabled(false);
    }
    if (myButtons[0][2].getText().equals("O") || myButtons[0][2].getText().equals("X")){
        buttons[2].setEnabled(false);
    }
    if (myButtons[0][3].getText().equals("O") || myButtons[0][3].getText().equals("X")){
        buttons[3].setEnabled(false);
    }
    if (myButtons[0][4].getText().equals("O") || myButtons[0][4].getText().equals("X")){
        buttons[4].setEnabled(false);
    }
    if (myButtons[0][5].getText().equals("O") || myButtons[0][5].getText().equals("X")){
        buttons[5].setEnabled(false);
    }                       

   if (myButtons[0][6].getText().equals("O") || myButtons[0][6].getText().equals("X")){
        buttons[6].setEnabled(false);
}

if (checkHorizontalWin(letter)
    || checkVerticalWin(letter)
    || checkDiagonalToTheLeftWin(letter)
    || checkDiagonalToTheRightWin(letter)
    ) {
        win = true;

        if (win == true) {
            JOptionPane.showMessageDialog(null, letter + " has won!");
            System.exit(0);
        }    
    }
}




/**
 *
 * @param args
 */
public static void main(String[] args){
    new Connect();
}
}

【问题讨论】:

    标签: java button fonts size


    【解决方案1】:

    你可以使用:

    button.setFont(new Font("Arial", Font.PLAIN, 40));
    
    • "Arial" 显然是所使用字体的名称。
    • Font.PLAIN 表示纯文本(与粗体或斜体相反)。
    • 40 是字体大小(使用与 Microsoft Word 相同的字体大小编号系统)

    Javadoc for JComponent.setFont()

    Javadoc for Java.awt.Font

    【讨论】:

    • 我应该在 actionPerformed 中调用它吗?
    • setFont(Font) 工作正常。但是只有一个问题,如果字体足够大,它也会影响按钮的大小......
    【解决方案2】:

    我不确定这是否可行,但查看JButton 文档,您可以调用setFont(Font font) 方法。您可以尝试使用 Font(String name, int style, int size) 构造函数将 Font 创建为您想要的字体大小。

    【讨论】:

      猜你喜欢
      • 2012-01-30
      • 2011-09-05
      • 2010-09-20
      • 1970-01-01
      • 2022-11-14
      • 2018-07-16
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多