我有两个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 概念。