Java 在JFrame中访问变量
如果我有以下Java代码: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
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;
}
}