目前正在尝试制作TicTacToe游戏,我设置了框架和9个按钮(玩家可以选择每个方格)。单击时为每个按钮添加功能时遇到了一些麻烦。
package OX;
import javax.swing.*;
import java.awt.*;
public class OX{
public static void main(String[] args){
JFrame frame = new JFrame("OX");
frame.setSize(800,800);
frame.setVisible(true);
frame.getContentPane().setBackground(Color.BLACK);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridBagLayout());
frame.add(panel);
GridBagConstraints c = new GridBagConstraints();
JButton button1 = new JButton("1");
button1.setPreferredSize(new Dimension(100,100));
c.gridx = 1;
c.gridy = 1;
c.insets = new Insets(50,50,50,50);
panel.add(button1, c);
JButton button2 = new JButton("2");
button2.setPreferredSize(new Dimension(100,100));
c.gridx = 2;
c.gridy = 1;
panel.add(button2, c);
JButton button3 = new JButton("3");
button3.setPreferredSize(new Dimension(100,100));
c.gridx = 3;
c.gridy = 1;
panel.add(button3, c);
JButton button4 = new JButton("4");
button4.setPreferredSize(new Dimension(100,100));
c.gridx = 1;
c.gridy = 2;
panel.add(button4, c);
JButton button5 = new JButton("5");
button5.setPreferredSize(new Dimension(100,100));
c.gridx = 2;
c.gridy = 2;
panel.add(button5, c);
JButton button6 = new JButton("6");
button6.setPreferredSize(new Dimension(100,100));
c.gridx = 3;
c.gridy = 2;
panel.add(button6, c);
JButton button7 = new JButton("7");
button7.setPreferredSize(new Dimension(100,100));
c.gridx = 1;
c.gridy = 3;
panel.add(button7, c);
JButton button8 = new JButton("8");
button8.setPreferredSize(new Dimension(100,100));
c.gridx = 2;
c.gridy = 3;
panel.add(button8, c);
JButton button9 = new JButton("9");
button9.setPreferredSize(new Dimension(100,100));
c.gridx = 3;
c.gridy = 3;
panel.add(button9, c);
}
}
我尝试过很多不同的想法,但似乎无法做到这一点。
谢谢!
答案 0 :(得分:1)
首先,您的代码不是模块化的。我建议你用适当的课程模块化
Swing的重要接受是监听器类。编写按钮的功能;您需要实现ActionListener并构建此类 所有游戏逻辑都将在此Listener类中实现。
有一个单独的方法来验证此侦听器的游戏状态(谁赢/输)。这应该让你的任务变得简单。
请参阅 - https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionListener.html http://www.codejava.net/java-core/the-java-language/java-8-lambda-listener-example
希望这会有所帮助。干杯!
答案 1 :(得分:1)
package OX;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class OX{
public static void main(String[] args){
JFrame frame = new JFrame("OX");
frame.setSize(800,800);
frame.setVisible(true);
frame.getContentPane().setBackground(Color.BLACK);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridBagLayout());
frame.add(panel);
GridBagConstraints c = new GridBagConstraints();
JButton button1 = new JButton("1");
button1.setPreferredSize(new Dimension(100,100));
c.gridx = 1;
c.gridy = 1;
c.insets = new Insets(50,50,50,50);
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test");
}
});
panel.add(button1, c);
JButton button2 = new JButton("2");
button2.setPreferredSize(new Dimension(100,100));
c.gridx = 2;
c.gridy = 1;
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test2");
}
});
panel.add(button2, c);
JButton button3 = new JButton("3");
button3.setPreferredSize(new Dimension(100,100));
c.gridx = 3;
c.gridy = 1;
button3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test3");
}
});
panel.add(button3, c);
JButton button4 = new JButton("4");
button4.setPreferredSize(new Dimension(100,100));
c.gridx = 1;
c.gridy = 2;
button4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test4");
}
});
panel.add(button4, c);
JButton button5 = new JButton("5");
button5.setPreferredSize(new Dimension(100,100));
c.gridx = 2;
c.gridy = 2;
button5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test5");
}
});
panel.add(button5, c);
JButton button6 = new JButton("6");
button6.setPreferredSize(new Dimension(100,100));
c.gridx = 3;
c.gridy = 2;
button6.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test6");
}
});
panel.add(button6, c);
JButton button7 = new JButton("7");
button7.setPreferredSize(new Dimension(100,100));
c.gridx = 1;
c.gridy = 3;
button7.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test7");
}
});
panel.add(button7, c);
JButton button8 = new JButton("8");
button8.setPreferredSize(new Dimension(100,100));
c.gridx = 2;
c.gridy = 3;
panel.add(button8, c);
button8.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test8");
}
});
JButton button9 = new JButton("9");
button9.setPreferredSize(new Dimension(100,100));
c.gridx = 3;
c.gridy = 3;
panel.add(button9, c);
button9.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test9");
}
});
}
}
@Vijayan Kani
我将ActionListener添加到每个按钮