gpt4 book ai didi

Java Swing 使用另一个文件中的组件打开一个新按钮

转载 作者:行者123 更新时间:2023-12-01 19:02:48 24 4
gpt4 key购买 nike

我为基本的 Java Swing 窗口编写了代码,现在我想在另一个窗口中运行游戏。该窗口基本上是暂时的,直到用户点击按钮。这是第一个窗口的代码:

    import javax.swing.*;

public class Main extends Game {
public static int height = 300;
public static int width = 200;
public String x = "X", y = "Y", player1, player2;
public String[] grid;

public static void main(String args[]) {
/*--------------------------- DECLARATIONS ----------------------------*/
JFrame sudwin = new JFrame("Tic tac toe");
JLabel label1 = new JLabel("<html><b>Welcome to Tic Tac Toe!</b></html>");
JLabel label2 = new JLabel("Player 1:");
JLabel label3 = new JLabel("Player 2:");
JLabel label4 = new JLabel("<html>Enter your names in the boxes, then </br>" + "click the start button to begin!</html>");
JLabel label5 = new JLabel("Version 0.1");
JTextField np1 = new JTextField();
JTextField np2 = new JTextField();
JButton btstart = new JButton("Start");

sudwin.getContentPane().add(label1);
sudwin.getContentPane().add(label2);
sudwin.getContentPane().add(label3);
sudwin.getContentPane().add(label4);
sudwin.getContentPane().add(np1);
sudwin.getContentPane().add(np2);
sudwin.getContentPane().add(btstart);
sudwin.getContentPane().add(label5);
/*--------------------------- METHODS ---------------------------------*/
sudwin.setSize(width, height);
sudwin.setVisible(true);
sudwin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sudwin.setLocationRelativeTo(null);
sudwin.getContentPane().setLayout(null);

label1.setBounds(26, 11, 156, 14);
label2.setBounds(10, 102, 100, 10);
label3.setBounds(10, 144, 100, 10);
label4.setBounds(10, 39, 172, 52);
label5.setBounds(10, 241, 100, 14);
np1.setBounds(10, 113, 111, 20);
np2.setBounds(10, 156, 111, 20);
btstart.setBounds(50, 202, 100, 28);

btstart.addActionListener(new act1());
}
/*--------------------------- EVENT HANDLERS ----------------------------*/
static class act1 implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}
}

基本上,我有 2 个 java 文件:Main.java 和 Game.java

Main.java 具有上面的代码,可以完美执行,Game.Java 具有 Jlabel 和 JFrame,但默认情况下,它是不可见的。如何使 Main.java 识别 Game.java 中的所有声明并使其在单击按钮时可见?

我使用的是 Windows XP,使用 Eclipse。

最佳答案

您不希望 Game.java 的所有字段都可用于 Main.java,但您需要的是一个可以调用的方法,例如 public void setGameVisible()。然后在你的Main.java中你将有一个Game.java的实例,Game game = new Game()然后你可以在按钮时执行game.setGameVisible()被点击。在此方法中,您将拥有使 Game.java 组件可见的所有逻辑。

一般来说,您不想公开字段。总体思路是encapsulation您希望通过方法使一个类中的字段可供其他类使用。例如。

public class Main
{
protected String gameName = "Super Awesome Game";

public String getName()
{
return gameName;
}
}

这样其他人就无法更改字符串 gameName,如果它是公开的,他们就可以这样做。保持字段 protected 允许Main.java的子类仍然可以访问这些字段。

关于Java Swing 使用另一个文件中的组件打开一个新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com