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

标签 java swing reference

日安,

我是 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/

相关文章:

java - 获得拥有 1000 个关注者的推特用户

Java isEmpty() 未定义字符串?

java - 将 Java Web 项目部署到物理服务器

java - frame.repaint() 不工作

c++ - 如何从 C++ 中实例化对象的函数指针调用函数?

java - itext7 中的表多于 OccupiedAreaBBox

java - 如何在java中复制粘贴和剪切粘贴文件或文件夹?

java - 获取选定的行

c# - 指向非托管代码的 Int 指针

c++ - "const int& jj"和 "int& const jj"有什么区别?