我正在尝试制作一个注册程序,所以创建了一个小窗口,我可以在其中键入要注册的名称,并在按下按钮时将其保存在另一个类中。但是另一个类并没有从字符串中提取信息。
public class Puxarclasse
{
public static void main(String[] args)
{
new ClassePuxar();
ArrayList lista = new ArrayList ();
lista.add(ClassePuxar.stringTeste);
System.out.println(lista);
}
}
public class ClassePuxar implements ActionListener
{
private static JButton botao;
private static JTextField tfPuxar;
public static String stringTeste;
public ClassePuxar ()
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
tfPuxar = new JTextField();
botao = new JButton ();
frame.setSize (400, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tfPuxar.setBounds(50,60,300,20);
botao.setBounds(150,110,100,20);
botao.addActionListener(this);
panel.setLayout(null);
frame.add(panel);
panel.add(tfPuxar);
panel.add (botao);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
stringTeste = tfPuxar.getText();
tfPuxar.setText ("");
}
}
你在一个事件驱动的环境中工作,也就是说,在未来的某个时刻,会发生一些事情,然后你可以响应它。
你的思维定式似乎处于一个程序化的工作流程中(事情以线性时间顺序发生)
例如...
new ClassePuxar();
ArrayList lista = new ArrayList ();
lista.add(ClassePuxar.stringTeste);
System.out.println(lista);
当窗口(相关
ClassePuxar
)出现在屏幕上时,ArrayList
代码已经运行,因此用户没有机会实际输入任何信息。
你必须有基本的选择:
哦,
static
在这种情况下不是跨对象通信机制,以这种方式实现是一个坏主意。
null
布局也是一个坏主意。花时间和精力学习如何使用各种布局管理器
所以,您可以用...替换几乎所有代码
String input = JOptionPane.showInputDialog(null, "Show me the input", "Input", JOptionPane.PLAIN_MESSAGE);
if (input != null) {
ArrayList lista = new ArrayList();
lista.add(input);
System.out.println(lista);
}
你应该得到基本的预期结果。