2013-12-09 2 views
6

Ich bin bei dem Verlust von was für die Fertigstellung meines Term-Projekts zu tun ist. Ich arbeite an einem Connect Four-Spiel und möchte die Schriftgröße in einem JButton erhöhen. Ich bin relativ neu in der Programmierung und habe noch nichts mit Schriften gearbeitet. Ich möchte die Schriftart innerhalb der Schaltfläche mindestens verdoppeln, um sie während des Spiels besser sichtbar zu machen. Kann mir jemand helfen oder auf eine Lösungsfindung hinweisen? Vielen Dank! Mein Code ist unten.Zunehmende Schriftgröße in einem 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(); 
} 
} 

Antwort

2

Ich bin mir nicht sicher, ob dies funktionieren wird, aber an den JButton docs suchen, gibt es eine setFont(Font font) Methode, die Sie aufrufen können. Sie können versuchen, ihm eine Font mit der Schriftgröße, die Sie möchten, mit dem Font(String name, int style, int size) Konstruktor erstellt.

18

können Sie verwenden:

button.setFont(new Font("Arial", Font.PLAIN, 40)); 
  • "Arial" offenbar der Name der Schriftart verwendet wird.
  • Font.PLAIN bedeutet Klartext (im Gegensatz zu fett oder kursiv).
  • 40 ist die Schriftgröße

Javadoc for JComponent.setFont()

Javadoc for Java.awt.Font

+0

Soll ich das in AktionPerformed nennen? – Smn21

0

Es funktioniert gut mit setFont(Font) (das gleiche Nummerierungssystem für Schriftgröße wie Microsoft Word verwenden). Aber es gibt nur ein Problem, es wirkt sich auch auf die Größe Ihrer Schaltfläche aus, wenn die Schriftgröße groß genug ist ...