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



我有两个jFrames:Frame1和Frame2。

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

1 可以打开帧 2。

我在第 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类编写为

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);
}

您可以阅读面向对象编程概念以更好地理解 OOP 概念。

最新更新