gpt4 book ai didi

java - 如何从 JFrame 2 检索 JFrame 1 中设置的类字段

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

日安,

我是 Java 编程的新手,目前正在学习这方面的类(class)。我们现在正在开发一个项目,我们的任务是创建我们自己的类。到目前为止我已经成功了。我的应用程序具有两个 JFrame 表单(JFrame1JFrame2)。我使用的是 NetBeans 7.3.1 IDE,并且 JFrame1 设置为主类。

当我运行应用程序时,JFrame1 打开,我使用以下代码通过按钮设置类“company”中字段的值:

HERE'S A LINK TO MY COMPANY CLASS

public class JFrame1 extends javax.swing.JFrame
{

//Create company object and assign it to myCompany
company myCompany = new company(null, null, null, null, null);

private void btn_okActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:

//Create variables to hold the user input from the form
String name = txt_company_name.getText();
String street = txt_address_street.getText();
String city = txt_address_city.getText();
String state = txt_address_state.getText();
String zip = txt_address_zipcode.getText();

//Assign the form data to the fields in the company class
myCompany.set_company_name(name);
myCompany.set_company_street(street);
myCompany.set_company_city(city);
myCompany.set_company_state(state);
myCompany.set_company_zipcode(zip);

//Display a friendly message informing user that input has been accepted
//then hide this form and display JFrame2.
JOptionPane.showMessageDialog(null, "Company data entered successfully, "
+ "application will now open.\nClick OK to proceed.", "THANK YOU!",
JOptionPane.INFORMATION_MESSAGE);
new JFrame2().setVisible(true); //Create new instance of my JFrame2 form and make it visible
this.setVisible(false); //Hide this form from view
}
}

在“company”类中设置值后,表单将关闭并打开我的 JFrame2,其中有一个名为“lbl_company_name”的标签。我想使用之前使用 JFrame1 设置的“company”类的字段值来设置此标签的文本属性。

这是我到目前为止所尝试过的,标签被更改为一系列空值。我有一种感觉,这是因为我使用“new”关键字来创建一个新对象 - 而不是具有我需要的数据的同一对象。我说得对吗?

public class JFrame2 extends javax.swing.JFrame
{

//Create company object and assign it to myCompany
company myCompany = new company(null, null, null, null, null);

public void showCompanyInfo()
{
// Define variables and assign to them fields from my Company class
String name = myCompany.get_company_name();
String street = myCompany.get_company_street();
String city = myCompany.get_company_city();
String state = myCompany.get_company_state();
String zip = myCompany.get_company_zipcode();

// Use the variables above to manipulate the display of a label
lbl_company_name.setText(name + " | " + street + "," + city + "," + state + " " + zip);
}

/**
* Creates new form JFrame2
*/
public JFrame2()
{
initComponents();
jPanel1.setVisible(false);
showCompanyInfo();
}
}

非常感谢您的帮助,谢谢。

最佳答案

忘记具体的代码解决方案,而应该专注于基本问题:

  • 您为每个类(class)提供了自己的 Company 对象(同样,类(class)名称的第一个字母应为大写,无论您的讲师怎么说),并且对一个 Company 对象所做的更改不会反射(reflect)在另一个 Company 对象中,因为它们是完全独立的独特对象。
  • 要解决此问题,两个类应共享相同的 Company 对象。可以通过构造函数参数或 setter 方法将其从一个传递到另一个,setCompany(Company myCompany) 与设置任何字段相同。
  • 代码详细信息应该供您了解。您处理其他人答案的主要问题是您复制的是代码而不是想法。用我和他们的想法编写你自己的代码,你将会有更顺利的航行和更好的理解。
  • 正如我在评论中所说,向用户吐出不同的 JFrame 是一个糟糕的设计,而且您会发现很少有程序可以做到这一点。相反,通过 CardLayout 交换 View ,通常是保存复杂 GUI 的 JPanel。 .

关于java - 如何从 JFrame 2 检索 JFrame 1 中设置的类字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305881/

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