变量的访问
如果我有下面的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);
}
}
的InputBox类:
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();
}
}
}
}
如何访问in
从主类?我是一个绝对的初学者,使用Java的GUI,所以请不要太苛刻!
感谢
尽管你可以有更容易的代码妳比现在有,这里是一个解决方案:
移动的处理程序进行的InputBox或使其非私有,然后提供一个getter处理程序类。
1)
private class Handler implements ActionListener {
String in = "";
public void actionPerformed(ActionEvent event) {
if (event.getSource() == textField1) {
in = event.getActionCommand();
}
}
public String getValue(){
return in;
}
}
那么你可以通过处理对象访问它。
2)或更简单的方法是,将您的in
变量声明移动InputBox
并在那里提供一个getter。
'Handler'类是私人的。 – 2013-05-10 20:23:49
这不起作用 – MadProgrammer 2013-05-10 21:13:40
移动声明in
到InputBox
类。您可以将框架类型设置为模态(setModal(true)
),并从ActionListener
中调用dispose()
方法,然后您的主线程将会阻塞,直到用户输入某个数字。
我不知道你想用'String'做什么,但为什么不在'actionPerformed'方法中做? – 2013-05-10 20:19:50