- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为一个项目创建了一个基于 Java 的 tic-tac-toe 游戏。该游戏有一个带有 Jbutton
的 Jframe 显示,可通过事件监听器响应鼠标点击。 GUI 显示可通过拖动边缘来扩展。但是,X
和 O
的文本大小保持固定。我正在尝试查找可以与我的文本关联的事件或更改监听器或类似的代码类型 - 当用户展开和折叠显示框时,根据显示的大小展开和折叠文本大小。
这是我迄今为止完成的代码:
package mytictactoe;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class TicTacToeV1 implements ActionListener
{
/*Create winning combinations instance variable*/
private int[][] winCombinations = new int[][]
{
{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, //horizontal wins
{0, 3, 6}, {1, 4, 7}, {2, 5, 8}, //vertical wins
{0, 4, 8}, {2, 4, 6} //diagonal wins
};//end winCombinations
//Create the rest of the instance variables
private String letter = "";
private JFrame window = new JFrame("Tic-Tac-Toe ");
private JButton buttons[] = new JButton[9];
private int count = 0;
private boolean win = false;
//Create Window Display
public TicTacToeV1()
{
window.setSize(300,300);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,3));
//MAC OS Specific Translucency Setting
window.getRootPane().putClientProperty("Window.alpha", new Float(0.95f));
//Set Window display color
window.setBackground(Color.YELLOW);
//Center display on screen
window.setLocationRelativeTo(null);
window.setVisible(true);
//install buttons in window with a mouse click-event listener
for(int i=0; i<=8; i++){
buttons[i] = new JButton();
window.add(buttons[i]);
buttons[i].addActionListener(this);
}// End Window Display creation
//Make Game Window visible
window.setVisible(true);
}//End TicTacToeV1 Board and Listener
//Solicit user input
/**
When an object is clicked, perform an action.
@param a action event object
*/
public void actionPerformed(ActionEvent a)
{
count++;
//Determine X or O turn
if(count % 2 == 0)
{
letter = "<html><font color = green>O</font></html>";
}//End O turn
else
{
letter = "<html><font color = blue>X</font></html>";
}//End X turn
//set font of X & O, when a button has been played, disable button from further use
Font font = new Font("Times New Roman",Font.BOLD, 50);
final JButton pressedButton = (JButton)a.getSource();//determine button selected
pressedButton.setFont(font);
pressedButton.setText(letter);
pressedButton.setEnabled(false);//disable selected buttons from further use
pressedButton.addActionListener(new ActionListener() //want expansion/drag listener - not action listener
{//if display box increasing: && if display box decreasing... limit box size expand & shrink
//button & font relative resizing
int size = 50;
public void actionPerformed(ActionEvent ev)
{
pressedButton.setFont(new Font("Times New Roman",Font.BOLD, ++size));
}
}
);
//Determine who won
for(int i=0; i<=7; i++)
{
if( buttons[winCombinations[i][0]].getText().equals(buttons[winCombinations[i][1]].getText()) &&
buttons[winCombinations[i][1]].getText().equals(buttons[winCombinations[i][2]].getText()) &&
buttons[winCombinations[i][0]].getText() != "")
{ win = true;}
}//End For loop for win determination
//Show a dialog when game is over
if(win == true)
{
if(count % 2 == 0)
{
char lineWinner = letter.charAt(letter.indexOf("O"));//necessary for lineWinner, which replaces HTML 'letter' variable
JOptionPane.showMessageDialog(null, lineWinner + " wins the game!");//lineWinner was 'letter'
System.exit(0);
}//End O winner
else
{
char lineWinner = letter.charAt(letter.indexOf("X"));//necessary for lineWinner, which replaces HTML 'letter' variable
JOptionPane.showMessageDialog(null, lineWinner + " wins the game!");//lineWinner was letter
System.exit(0);
}//End X winner
}//End Win dialog
//If game is a draw
else if(count == 9 && win == false)
{
JOptionPane.showMessageDialog(null, "The game was tie!");
System.exit(0);
}//End Draw dialog
}//End ActionPerformed
public static void main(String[] args)
{
DynamicFont re = new DynamicFont();
re.setVisible(true);
TicTacToeV1 starter = new TicTacToeV1();
}//End main, which calls TicTacToeV1 method
}
最佳答案
setBounds(...)
来定位组件。componentResized(...)
方法中更改按钮字体大小。您可能需要使用 FontMetrics 类才能使其正常工作。关于java - TicTacToe : text expansion relative to display expansion? 更改监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158256/
我为一个项目创建了一个基于 Java 的 tic-tac-toe 游戏。该游戏有一个带有 Jbutton 的 Jframe 显示,可通过事件监听器响应鼠标点击。 GUI 显示可通过拖动边缘来扩展。但是
我知道 mat-expansion-panel-headers 是一个按钮。单击该按钮上的任意位置可切换扩展的打开/关闭。但我不想让用户单击标题上的任何位置并打开它。应该有一个小按钮。单击该按钮将打开
我想做一些图像预处理,但有一个步骤我不确定最好的方法。 我有带有注释的有趣区域的 MRI 图像,我检测轮廓并裁剪图像: 我将在此处发布我的代码,以便您了解我如何完成前面的步骤以及我们拥有的数据 low
我无法以编程方式添加 mat-expansion-panel。我想在用户通过单击按钮调用函数时添加它们。根据需要多次添加扩展面板。 我尝试为 mat-expansion 添加 HTML 标签,这是一种
这个问题在这里已经有了答案: Dynamic variable names in Bash (17 个回答) 5年前关闭。 我能够批量执行以下操作,但是在我的一生中,我无法弄清楚如何在 bash 中执
在 makefile 中,我使用 define 指令定义一个变量。该变量将保存我想要执行的可配置命令列表。 我希望此变量获取文件列表(例如 .foo 文件)。这些文件是在 makefile 执行期间创
Cantor expansion自然数n的是 n = ak * k!+a(k − 1) *(k −1)!+.... + a2 * 2!+a1 *1! 其中所有的ai(数字)满足0≤ai≤i 我知道它
有什么办法可以关闭这里文档中的参数扩展吗? shell 命令: $ cat > analyze.sh tmp awk -F '(' '{print $NF}' asr.log | awk '{pr
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Why i am not getting the expected output in the follow
默认情况下,当用户单击标题中的任意位置时,Angular 扩展面板会展开。但是我想更新此功能,以便只有右侧箭头按钮应该触发扩展事件。有人可以帮助我实现这一目标吗?下面是一个示例代码。 https://
我有一个 formArray与多个 formGroups .每个formGroup位于扩展面板内。现在当我点击 "Check what's missing"按钮,表单验证运行并显示无效表单字段的错误。
我正在尝试使用 *ngFor 在 Mat-accordian 中显示多个 Mat-expansion-panel。我需要点击一个我能够做到的按钮来添加一个新的垫子扩展面板。我还需要在单击按钮时展开(打
“变量扩展”是什么意思?它的意思只是“变量定义”,还是其他什么意思? 当我说setLocal EnableDelayedExpansion时会发生什么? Google 并不清楚。 最佳答案 变量扩展表
参见 this Stackblitz . Angular 材mat-expansion-panel允许 lazy rendering , This is the expansion t
这个问题在这里已经有了答案: Explanation of colon operator in ": ${foo=value}" (2 个答案) 关闭 7 年前。 试图理解用 bash 编写的 do
我想知道是否有办法为已禁用的 Mat-Expansion-Panel 设置样式。我在标题中有按钮并与它们交互会切换面板,所以我相信最好只用按钮切换面板并禁用面板本身。 但是,当我禁用面板时,面板内的所
Bash 具有称为历史扩展的功能,您可以使用快捷方式扩展到您之前在 bash 中键入的内容。 示例:!! - 扩展为之前的命令 $> rm -f /var/log/access.log rm: /va
我正在编写 CSS 来更改焦点和悬停时文本和箭头指示器的颜色。然而,指示器箭头单独起作用。当您将鼠标悬停在整个面板上时,我希望它发生变化。目前箭头指示器只有当你直接悬停在它上面时才会改 rebase
我添加了 Angular material mat-expansion-panel 到 select option ,当我点击选择菜单时,mat-expansion-panel 自动打开,任何人都知道
问题: 是否可以让一个函数接收一个既有百分号又有感叹号的参数? 问题: 我在 FOR/D 中以这种方式处理目录: FOR /D %%d IN ("%~1\*") DO ( CALL :proc
我是一名优秀的程序员,十分优秀!