[英]How to detect if a action listener has been triggered from another class?
我有一個向用戶詢問問題的方法,在我的 GUI 中我有一個JTextArea
,他們在其中輸入答案。 由於提出問題的方法在不同的 class 中,我將如何讓用戶回答返回該方法?
GUI
( JFrame
類):
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GUI extends JFrame{
public GUI(String name) {
super(name);
//setSize(700,700);
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel myPanel1 = new GUIPanel("Center");
add(myPanel1, BorderLayout.CENTER);
pack();
setVisible(true);
setResizable(true);
}
public static void main(String[] args) {
GUI frame = new GUI("Game");
}
}
GUIPanel
( JPanel
類):
package javaapplication2;
import java.awt.*;
import javax.swing.*;
public class GUIPanel extends JPanel {
JLabel label1;
JTextField textField1;
JLabel label2;
JTextArea textArea1;
public GUIPanel(String position) {
if (position.equals("Center")) {
createCenterPanel();
}
}
public void createCenterPanel() {
setLayout(new GridLayout(2,2,10,10));
label1 = new JLabel("Type Here: ");
textField1 = new JTextField();
textField1.setPreferredSize(new Dimension(110, 25));
label2 = new JLabel("Game Output: ");
textArea1 = new JTextArea();
add(label1);
add(textField1);
add(label2);
add(textArea1);
}
}
我還沒有添加方法調用或ActionListener
class 但基本上它會調用一個方法,該方法會提出問題,然后用戶必須回答。 這就是我所堅持的。 我不知道如何獲得“檢測”用戶輸入內容然后檢索數據的方法。
我考慮過制作文本字段 static 並制作 static boolean 當執行的操作(用戶按下回車)被觸發時它被更改為 true 以檢查循環,但這意味着必須有一種方法來檢查在那里。
我不確定這是否是您要找的東西,因為我不知道我是否理解正確您需要什么,但我嘗試了
我添加的唯一代碼是方法 getTextField1Text() 並在 createCenterPanel() 中調用它,如果您有任何要添加的內容,請告訴我,希望對您有所幫助
public void createCenterPanel() {
setLayout(new GridLayout(2, 2, 10, 10));
label1 = new JLabel("Type Here: ");
textField1 = new JTextField();
textField1.setPreferredSize(new Dimension(110, 25));
label2 = new JLabel("Game Output: ");
textArea1 = new JTextArea();
getTextField1Text();
add(label1);
add(textField1);
add(label2);
add(textArea1);
}
public void getTextField1Text() {
textField1.addActionListener(e -> {
textArea1.setText(e.getActionCommand());
textField1.setText("");
});
}
-------------------------------------------------------------
在評論部分討論后,我試圖想出一些新的東西(我希望我做到了)來幫助你,我添加了 2 種方法來獲得答案(注意:我使用 System.out.println(); 僅用於測試)
這些方法是在GUIPanel class上添加的
public void getAnswer() {
textArea1.addActionListener(e -> {
textArea1.setText(e.getActionCommand());
testAnswer(textArea1.getText());
});
}
public String testAnswer(String s) {
String saveParam = s;
System.out.println(saveParam);
return saveParam;
}
在 GUI class 上,我做了一些小改動,所以我可以測試這些方法是否正在打印答案,
GUIPanel myPanel1 = new GUIPanel("Center");
public GUI(String name) {
super(name);
//setSize(700,700);
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
add(myPanel1, BorderLayout.CENTER);
pack();
setVisible(true);
setResizable(true);
}
public GUIPanel getMyPanel1() {
return myPanel1;
}
public static void main(String[] args) {
GUI frame = new GUI("Game");
frame.getMyPanel1().getAnswer();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.