gpt4 book ai didi

java - 如何将文本字段从主类传递到另一个类

转载 作者:行者123 更新时间:2023-12-01 23:48:08 25 4
gpt4 key购买 nike

如何将文本字段从主类 pri 传递到 CounterTask1 类。

下面的程序是一个例子。真实的程序包含类似的结构。

在 CounterTask1 类中,文本字段添加另一个字符串。如果单击打印按钮,它应该在终端中打印文本字段。

提前谢谢。

import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.SwingWorker;
import java.util.List;
public class pri
{
JFrame Frame1 = new JFrame();
JLabel SourceLabel1 = new JLabel("Source Name");
JTextField SourceField1 = new JTextField(20);
public void MainFrame()
{
final CounterTask1 task1 = new CounterTask1();
Frame1.setLayout(null);
JButton Print = new JButton("Print");
Print.setBounds(10,10,100,30);
Print.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent ae)
{ String sourcename=SourceField1.getText();
System.out.println("Printing in Terminal "+sourcename);
task1.execute(); } });

JButton Exit = new JButton("Exit");
Exit.setBounds(10,50,100,30);
Exit.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent ae)
{ System.exit(0); } });

SourceField1.setBounds(130,10,100,30);
Frame1.add(SourceField1);
Frame1.add(Print);
Frame1.add(Exit);
Frame1.pack();

Frame1.setSize(250,150);
Frame1.setLocation(100,100);
Frame1.setVisible(true);
Frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

} //MainFrame

public static void main(String[] args)
{ SwingUtilities.invokeLater(new Runnable()
{ public void run()
{
pri frame = new pri();
frame.MainFrame(); } });
}
}

class CounterTask1 extends SwingWorker<Integer, Integer>
{
protected Integer doInBackground() throws Exception
{

String one = SourceField1.getText();
String two = "Thanks !";
String Addst = one +two ;
System.out.println("printing in Task" + Addst);
return 0;

}// protected main class

protected void process(List<Integer> chunks)
{
System.out.println(chunks);
}

} // counter task

最佳答案

我会做不同的事情 - 将文本传递给 SwingWorker 的构造函数:

  Print.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String sourcename = SourceField1.getText();
System.out.println("Printing in Terminal " + sourcename);

// note change in constructor
// this way getText() is called on the EDT.
CounterTask1 task1 = new CounterTask1(SourceField1.getText());
task1.execute();
}
});

在另一个类中:

class CounterTask1 extends SwingWorker<Integer, Integer> {
private String text;

public CounterTask1(String text) {
this.text = text;
}

protected Integer doInBackground() throws Exception {

String one = text;
String two = "Thanks !";
String Addst = one + two;
System.out.println("printing in Task" + Addst);
return 0;
}

注意:

  • 如果您需要第二个类调用第一个类的方法,那么您将需要将第一个类的引用传递到第二个类中,类似于我上面传递字符串的方式。
  • 请确保不要从 doInBackground() 方法进行 Swing 调用。
  • 学习并遵守 Java 命名约定,以便我们可以更好地理解您将来发布的代码。类名应以大写字母开头,字段、变量和方法名称应以小写字母开头。

关于java - 如何将文本字段从主类传递到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679210/

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