我如何使用gui i与其他地方的功能一起构建?

时间:2012-07-07 14:22:23

标签: java swing

你好,我是新来的,我正在制作一个小的tictactoe游戏,我已经制作了如下gui:

public static void main(String[] args) {

    Frame frame1 =new Frame("TickTacToe");
    frame1.setLayout(null);
    frame1.setBounds(250,150,500,500);
    frame1.setVisible(true);
    frame1.addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent e){
            System.exit(0);
        }
    });

    final Button button11 = new Button("");
    button11.addActionListener(null);

    final Button button12 = new Button("");
    button11.addActionListener(null);

    final Button button13 = new Button("");
    button11.addActionListener(null);

    final Button button21 = new Button("");
    button11.addActionListener(null);

    final Button button22 = new Button("");
    button11.addActionListener(null);

    final Button button23 = new Button("");
    button11.addActionListener(null);

    final Button button31 = new Button("");
    button11.addActionListener(null);

    final Button button32 = new Button("");
    button11.addActionListener(null);

    final Button button33 = new Button("");
    button11.addActionListener(null);


    button11.setBounds(100, 100, 80, 70);
    button12.setBounds(100, 200, 80, 70);
    button13.setBounds(100, 300, 80, 70);
    button21.setBounds(200, 100, 80, 70);
    button22.setBounds(200, 200, 80, 70);
    button23.setBounds(200, 300, 80, 70);
    button31.setBounds(300, 100, 80, 70);
    button32.setBounds(300, 200, 80, 70);
    button33.setBounds(300, 300, 80, 70);

    frame1.add(button11); 
    frame1.add(button12); 
    frame1.add(button13); 
    frame1.add(button21); 
    frame1.add(button22); 
    frame1.add(button23); 
    frame1.add(button31); 
    frame1.add(button32);
    frame1.add(button33); 
}

我想在按钮中添加动作侦听器,但不是在这个虚拟空间中甚至是一个不同的类,所以我可以创建一种方法来运行一个循环的功能,如玩家转换器,如果是转一,它将设置按钮文本到x和o,如果它是其他我知道更多orless我需要使用的代码,但我无法找到一种方法来使用gui从其他地方而不是它自己的空白。我不太清楚我在寻找什么,所以任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

首先,这个程序结构非常糟糕。从它的外观我可以告诉你来自过程编程语言,如C或Basic或类似的东西。 Java完全是面向对象的体系结构。 Java可以在程序上运行,但它并不意味着。我要开始的第一件事是离开main()。这是一个很好的方法:

public class TicTacToe
{
    public TicTacToe()
    {

    }

    public static void main(String args[])
    {
        new TicTacToe();
    }
}

TicTacToe可能看起来很简单,但它有很多事情在进行,人们点击按钮所以你需要ActionListeners,你需要在每次移动后更新屏幕的UI,你需要检查以确保每一步是有效的,你需要在每次搬家后检查一下胜利还有更多。这几乎是不可能在主内部做的。

将任何类型的Component直接添加到JFrame中通常是一个坏主意。最好将JPanel放在JFrame中,然后将组件添加到JPanel。

尝试为您的游戏制作课程结构。这就是我要做的事情:

TicTacToe.class --> Checks rules, checks for wins and starts and stops game
Player.class (implements ActionListener) --> Listens for each Player's input
Board.class (extends JPanel) --> this will display the components for the game
Computer.class (extends Player) --> if you wanted to create an AI this is where you would do so

如果我是你,我会读一本关于Java游戏开发的书或上课。如果你想要擅长Java,这是一个很好的起点。你缺少了很多关键知识,你需要做一些简单的任务,比如做一个TicTacToe游戏。