如何让Jbutton运行另一个类



嗨,stackoverflow社区!

我正在为期末考试做一个AI TicTacToe项目,在按下jFrame类中的一个jButton后,我在尝试运行另一个类时遇到了问题。

我使用的是NetBean的jFrame类,在那里你可以通过从容器中放置它来轻松地进行设计,并且有些代码是不可编辑的。

我想为我的游戏项目制作一个可行的主菜单(这是一个jFrame类),它包含三个按钮,分别是Normal、Large和Extra Large。对于Normal按钮,我想让这个按钮在按下后运行TicTacToe(这是一个普通的java类),但由于某些原因,我无法让它工作。以下是代码:

主菜单.java

private void ButtonNormal(java.awt.event.ActionEvent evt) {                              
    // TODO add your handling code here:
    Normal_TicTacToe SIZE1 = new Normal_TicTacToe();  // This is the problem
    SIZE1.setVisible(true);                             
}
/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() 
    {
        public void run()
        {
            new MainMenu().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
private javax.swing.JButton buttonNormal;
// End of variables declaration                   
}

Normal_TicTacToe.java-我从互联网上得到了这段代码,我正在将其修改为大号和特大号。我相信这家伙是文档中的原始作者。

public final class Normal_TicTacToe extends JApplet 
{
private static final long serialVersionUID = 1L;
private final Normal_Tile[] TILES = new Normal_Tile[9];
private final int TILE_SPACING = 96;
private final int WIDTH = 96, HEIGHT = 96;
private final JFrame GAMEFRAME = new JFrame("Tic-Tac-Toe");
private final Normal_TilePainter PAINTER = new Normal_TilePainter(this);
private final Normal_ClickHandler CLICK_HANDLER = new Normal_ClickHandler(this);
private final boolean AI;
private boolean aiTurn = false;
private Normal_Holder turn = Normal_Holder.X;
private int whoseTurn = 0;
private final Dimension FRAME_SIZE = new Dimension(295, 304);
private final int FONT_SIZE = 64;
private int oWins = 0;
private int xWins = 0;
private boolean gameOver = false;
private boolean nextTurn = false;
public final Normal_AI GAME_AI = new Normal_AI(this);
public void init() 
{
    Normal_TicTacToe game = new Normal_TicTacToe(true);
game.newGame();
}
public Normal_TicTacToe(boolean ai) 
{
    this.AI = ai;
    PAINTER.setSize(FRAME_SIZE);
    buildFrame();
    loadTiles();
}

此外,两个java文件都在同一个包中。

如果您正在寻找扩展代码和所有java文件,您可以在这里找到:
我的主菜单.java
Chall的TicTacToe和他的java文件(向下滚动,直到您看到源文件)。

Normal_TICTACTOE的构造函数如下所示:

public Normal_TicTacToe(boolean ai) 
{
this.AI = ai;
PAINTER.setSize(FRAME_SIZE);
buildFrame();
loadTiles();
}

它的参数列表中有一个布尔变量。

因此,默认构造函数被覆盖。

使用布尔值(true或false)调用构造函数:

Normal_TicTacToe game = new Normal_TicTacToe(true);

(我认为这与人工智能的开启或关闭有关)

在得到的实例上调用方法newGame()。

game.newGame();

您应该在按钮中创建它的实例。

您的代码:

buttonXLarge.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        ButtonXLarge(evt); // not sure what it does, but it doesn't make Tic Tac Toe
    }
});

你最想做的可能是初始化并启动一个新的井字游戏板。

buttonXLarge.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        Normal_TicTacToe myBoard = new Normal_TicTacToe(true);
        myBoard.newGame();
    }
});

我不确定JApplet将如何处理您当前正在做的事情,因为我通常从不将小程序与JFrame混合,但特别是为了激活井字游戏板,您应该在actionPerformed监听器中编写您希望它做的事情。

如果你真的想节省编码时间,你可能可以在JFrame中使用JApplet的内脏来重建TicTacToe。

相关内容

  • 没有找到相关文章

最新更新