从另一个 class 更改 jTextField

Change jTextField from another class

我有两个不同的 类,它们创建了两个面板的 A 和 B。在 A 上单击按钮后启动 B。 当在 A 上单击按钮时,我想更改 B 中的 jTextField。

A的代码

private final B myB = new B();

public static void main(String args[])
    {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                new A().setVisible(true);
            }
        });
    }

开始B

private void btnIPCStartActionPerformed(java.awt.event.ActionEvent evt) 
    {                                            
        // TODO add your handling code here:
        launch.B.main(null);
    }

B

中 jTextField 的更改
private void btnBattRemoveActionPerformed(java.awt.event.ActionEvent evt)                                              
    {      
        **// Calling Via Variable**                                                  
        myB.txtSystemOutput.setText("Low Battery"); // **NOT Working**

        **// Calling Via Setter**
        myB.setTextSystemOutput("Low Battery"); // **NOT Working**

        **// Calling Via Direct Variable**
        project.B.txtSystemOutput.setText("Low Battery"); // **NOT Working**
    }

B码

public static void main(String args[])
    {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new B().setVisible(true);
            }
        });
    }

public void setTextSystemOutput(String value)
    {
        txtSystemOutput.setText(value);
    }

您不想通过调用其静态 main 方法来创建 B,因为这是不必要且有害的,因为它将 B 可视化实例与 A 对象隔离开来。而是在A中创建一个B实例,在非静态世界中创建它,这样A就可以根据需要调用B上的实例变量。

因此将方法更改为:

private void btnIPCStartActionPerformed(java.awt.event.ActionEvent evt) {                                            
   myB.setVisible(true);
}

不要使用 launch.B.main(null);,创建 B 的实例并将其传递给它所需的引用,以便告诉您需要更新的内容。

您应该抵制让 BA 直接相互修改的诱惑,因为这会使它们面临很多潜在风险并与您的代码紧密耦合,最好使用Observer Pattern 某种

根据您的示例,B 需要监视 A 中的一些状态变化,因此 B 需要 "listener" 到 A 并更新它的状态基于 A 宣布

的变化