为什么我不能通过另一个 jFrame 将项目添加到 jComboBox?

Why cant i add items to a jComboBox through another jFrame?

我有两个 jFrame:Frame1 和 Frame2。

Frame1有一个jComboBox和一个jButton; Frame2 只有一个 jButton。

Frame1可以打开Frame2。

我在第 1 帧上有此代码:

public class Frame1 extends javax.swing.JFrame {

public void addTextToComboBox(){
this.jComboBox1.removeAllItems();
this.jComboBox1.addItem("Hello");
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.addTextToComboBox();
}              

}

工作正常:当我单击 jButton 时,"Hello" 字符串被添加到 jComboBox。

现在我在 Frame2 上有了这段代码:

public class Frame2 extends javax.swing.JFrame {

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Frame1 frame1=new Frame1();
frame1.addTextToComboBox();
}

}

这样,当我单击 Frame2 上的 jButton 时,"Hello" 字符串不会添加到 Frame1 上的 jComboBox。

为什么?有人可以给我一个解决方案吗?

提前致谢。

因为您正试图将字符串添加到 Frame1 上的另一个 jComboBox 实例,但现在未显示。

如果要将字符串添加到现在显示的jComboBox,您需要将Frame1的对象传递给Frame2,然后调用addTextToComboBox();

示例:

您可以将 Frame2 class 写成

的一种方式
public class Frame2 extends javax.swing.JFrame {

    Frame1 frame1;
    public Frame2(Frame1 frame1) {
        this.frame1 = frame1;
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        frame1 = new Frame1();
        frame1.addTextToComboBox();
    }

}

并使用它

public static void main(String[] args) {
    Frame1 f1 = new Frame1();
    Frame2 f2 = new Frame2(f);
}

您可以阅读 Object-Oriented Programming Concepts 以更好地理解 OOP 概念。