gpt4 book ai didi

java - 将数据从 GUI 传递到 Java 中的另一个类

转载 作者:行者123 更新时间:2023-12-01 22:19:44 25 4
gpt4 key购买 nike

我正在做一个项目,其中包括创建战舰游戏。我有以下类(class):

  • 战舰(主类)
  • 玩家
  • 游戏
  • 董事会
  • Visualization (GUI 类,其中我有一个 JButtonsgridLayout),用户在其中按下 JButton想要插入船。

首先创建一个新的游戏,其中包含一些参数,例如棋盘的大小。然后在类 Game 中我做了一个新的 Visualization。在这个类中,我完成了 actionListeneractionPerformed

我的问题是如何将信息传递给类游戏?这就是我所拥有的:

Class Game
private Player _user;
private Player _computer;

然后我想检查 _user 的主板上是否有可用于插入飞船的位置。 _user.MethodOfClassPlayer();

Class Player
private int id;
private String name;
private Board _boardPlayer
Class Board
private int size;
private int[][] _board = null ;

执行的函数操作

  public void actionPerformed(ActionEvent e) {
for ( int i = 0; i < tUsuariCPU.length; i++ ){
for ( int j = 0; j < tUsuariCPU[i].length; j++ ){
if ( e.getSource() == tUsuariCPU[i][j] ){
buttonPressedUser(i,j);
JButton temp = (JButton) e.getSource() ;
temp.setBackground(java.awt.Color.ORANGE);
}

我想将按下的 JButton 信息传递给 Game 类,以了解该玩家是否可以使用该位置来放置船只。如果可用的话我会绘制 JButton我希望你能理解我。

最佳答案

考虑到其他答案,您可能需要使用ObserversObservable。 Observable 是一个可以被一个或多个观察者观察的类。一个观察者可以观察多个可观察对象。

示例:

public class Visualisation extends JFrame {
private Integer num;
private A myInnerClass;

public Visualisation(Observer o) {
num = 8;
myInnerClass = new A();
myInnerClass.setObserver(o);
}

public onButtonPressed(Event e) {
myInnerClass.notifyMyObservers();
}

public class A extends Observable {
public A() {
}

public void notifyMyObservers() {
this.setChanged();
this.notifyObservers(num); // the parameter can be any object
}
}
}

public class B implements Observer {
public B() {
}

public void update(Observable observed, Object arg) {
if (observed instance of A) {
if (arg instance of Integer) {
// ...
}
}
}
}

以下是如何将它们连接到示例主函数中

public static main(String[] args) {
B observer = new B();
Visualisation v = new Visualisation(observer);
}

关于java - 将数据从 GUI 传递到 Java 中的另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138686/

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