Java 在JFrame中访问变量

Java 在JFrame中访问变量,java,swing,jframe,actionlistener,Java,Swing,Jframe,Actionlistener,如果我有以下Java代码: import javax.swing.JFrame; class GuessMyNumber extends JFrame { public static void main(String[] args) { InputBox box = new InputBox("Guess a number between 1 and 100:"); box.setDefaultCloseOperation(JFrame.EXIT_ON_C

如果我有以下Java代码:

import javax.swing.JFrame;
class GuessMyNumber extends JFrame {
    public static void main(String[] args) {
        InputBox box = new InputBox("Guess a number between 1 and 100:");
        box.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        box.setSize(360, 360);
        box.setVisible(true);
    }
}
输入框类:

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class InputBox extends JFrame {
    private JLabel text1;
    private JTextField textField1;
    public InputBox(String prompt) {
        super("Guess My Number");
        setLayout(new FlowLayout());
        text1 = new JLabel(prompt);
        add(text1);
        textField1 = new JTextField(20);
        add(textField1);
        Handler handler = new Handler();
        textField1.addActionListener(handler);
    }
    private class Handler implements ActionListener {
        String in = "";
        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == textField1) {
                in = event.getActionCommand();
            }
        }
    }
}
如何从主类访问中的
?我是Java GUI的绝对初学者,所以请不要太苛刻


谢谢

尽管您的代码可能比您目前的代码简单得多,但这里有一个解决方案:

将处理程序移出InputBox或使其非私有,然后在处理程序类中提供一个getter

(一)

然后您可以通过Handler对象访问它


2) 或者更简单的方法是,将
中的
变量声明移动到
InputBox
中,并在那里提供一个getter。

中的
声明移动到
InputBox
类。您可以将frame type设置为modal(
setModal(true)
),并从
ActionListener
调用
dispose()
方法,然后您的主线程将阻塞,直到用户输入一些数字。

我不知道您想对
字符串做什么,但是为什么不在
actionPerformed
方法中执行呢?
Handler
类是私有的。
private class Handler implements ActionListener {
        String in = "";
        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == textField1) {
                in = event.getActionCommand();
            }
        }
        public String getValue(){
        return in;
        }
    }