gpt4 book ai didi

java - 从 JTextfield 获取输入

转载 作者:行者123 更新时间:2023-11-29 03:18:18 24 4
gpt4 key购买 nike

我能够让代码做我想做的事,除了我现在无法从中获得输入的事实。我现在想做的仍然是从 JTextfield 中获取文本并将其返回给创建框架对象的主要方法。有人可以帮我从以下代码中获取输入吗?

 package assignment5;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Frame2 extends JDialog implements ActionListener
{

private String a;
private JTextField field = new JTextField(30);

public Frame2(JFrame parent, String title, String message)
{
super(parent, title, true);

if (parent != null)
{
this.setSize(500,150);
this.setLocation(400,200);
}

JPanel messagePane = new JPanel();
messagePane.add(new JLabel(message));
getContentPane().add(messagePane, BorderLayout.PAGE_START);

JPanel buttonPane = new JPanel();
JPanel button2Pane = new JPanel();

JButton button = new JButton("OK");
JButton button2 = new JButton("Cancel");

buttonPane.add(button);
button2Pane.add(button2);

getContentPane().add(buttonPane, BorderLayout.PAGE_END);
getContentPane().add(button2Pane,BorderLayout.EAST);

//button.addActionListener(this);
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed( ActionEvent event)
{
parent.dispose();
}
});

button2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed( ActionEvent event)
{
parent.dispose();
}
});

JPanel textPane = new JPanel();
JTextField field = new JTextField(30);
textPane.add(field);
getContentPane().add(textPane, BorderLayout.CENTER);

field.addActionListener(this);


setDefaultCloseOperation(DISPOSE_ON_CLOSE);

//pack();
setVisible(true);
}


public void b ()
{
a = field.getText();
}

public String g ()
{
System.out.println("wasdfsdf" + a);
return a;
}

@Override
public void actionPerformed(ActionEvent event)
{
a = field.getText();
System.out.println("wasdfsdfsafddsfsdfsdfsafdsggsdfsdf" + a);
// TODO Auto-generated method stub

}

}

最佳答案

当您确实想使用模态 JDialog 时,您正在创建非模态 JFrame。将 MyFrame2 更改为模态 JDialog,您的问题就解决了。

关于原因的详细信息:

  • 当您创建和显示非模态 JFrame 时,程序流会立即在您显示 JFrame 的代码下方的调用代码中继续。
  • 这意味着您将尝试在用户没有机会向其中添加信息之前从 JTextField 中提取数据。
  • 另一方面,使用模态 JDialog 时,代码流会在您显示 JDialog 时立即在调用代码中停止,并且直到 JDialog 不再可见时才会恢复。
  • 因此,在用户处理对话框之前,不会调用下面显示对话框的代码,现在希望对话框中的 JTextField 中包含有用的信息。

编辑
我很惊讶这甚至可以编译:

many = Integer.parseInt()

你在这一行上没有解析,那不会飞。

您可能希望为您的 MyFrame2 提供一个公共(public)方法,该方法从其 JTextField 中提取字符串,然后在显示它之后调用该方法。像这样的东西:

public String getMyTextFieldText() {
return myTextField.getText();
}

然后在调用代码中:

MyFrame2 myFrame2 = new MyFrame2();
myFrame2.setVisible(true);

String text = myFrame2.getMyTextFieldText();
if (text != null && !text.trim().isEmpty()) {
int someNumber = Integer.parseInt(text);
}

关于java - 从 JTextfield 获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com