增加JButton中的字体大小

时间:2013-12-09 02:36:36

标签: java button fonts size

我无法为完成学期项目做些什么。我正在开发Connect Four游戏,我想增加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();
}
}

2 个答案:

答案 0 :(得分:24)

您可以使用:

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

Javadoc for JComponent.setFont()

Javadoc for Java.awt.Font

答案 1 :(得分:4)

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