gpt4 book ai didi

java - 在Java中调用类

转载 作者:行者123 更新时间:2023-12-02 00:26:16 25 4
gpt4 key购买 nike

我想用 Java 编写三个类,当单击类 A 中的一个按钮并单击类 B 中的另一个按钮时,这两个事件组合起来会创建类 C 的一个实例。我该怎么做?

(评论更新:)

下面是事件代码。

// There is a text area showing when it is clicked and when it 
// gets a response back from the thirdclass
...
buttonpanel = new JPanel();
getItButton = new JButton("Call ThirdClass");
getItButton.addActionListener (new ActionListener() {
public void actionPerformed (ActionEvent evt) {
textarea.append("Calling thirdclass...\n");
String result = thirdclass.fetch_message();
textarea.append(" Result = " + result + "\n\n");
}
});

最佳答案

将两个boolean变量aClickedbClicked初始化为false

当用户单击 A 类中的按钮时,将 aClicked 设置为 true。然后执行以下逻辑:

if (aClicked && bClicked)
{
new ClassC();
}
aClicked = false;
bClicked = false;

当用户单击B类中的按钮时,将bClicked设置为true。然后执行相同的逻辑。

我需要更多详细信息才能得到更好的答案。

编辑:鉴于您的代码示例并使用匿名类,我编写了以下内容。我通常不会用 Java 编写 GUI,而当我这样做时,也是使用 WindowBuilder。重点是这可能不是线程安全的,并且可能无法正确清理资源,但重点是演示使用 final< 从匿名类中引用 boolean 变量的概念 关键字。

这对我有用。如果它对您没有帮助,我将需要您的更多代码。

此外,对于 State 类,如果您的逻辑变得更复杂,我会推荐 Jake Greene 推荐的 FSM 方法。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class Main {
public static void main(String[] args) {
final State state = new State();

final JTextArea textArea = new JTextArea(1, 10);
textArea.setEditable(false);

JButton buttonA = new JButton("Button A");
buttonA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
state.clickA();
if (state.bothClicked()) {
textArea.setText("both clicked.");
}
}
});

JButton buttonB = new JButton("Button B");
buttonB.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
state.clickB();
if (state.bothClicked()) {
textArea.setText("both clicked.");
}
}
});

JButton reset = new JButton("Reset!");
reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
state.reset();
textArea.setText("");
}
});

JPanel pane = new JPanel();
pane.add(buttonA);
pane.add(buttonB);
pane.add(textArea);
pane.add(reset);

JFrame frame = new JFrame();
frame.setContentPane(pane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}

class State {
private boolean aClicked;
private boolean bClicked;

public void clickA() {
this.aClicked = true;
}

public void reset() {
this.aClicked = false;
this.bClicked = false;
}

public void clickB() {
this.bClicked = true;
}

public boolean bothClicked() {
return this.aClicked && this.bClicked;
}
}

关于java - 在Java中调用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952629/

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