Java 将 ArrayList 传递给另一个 JFrame

标签 java swing arraylist jframe

嗨,我正在学习 java,在我的项目中,我试图将数据传递到另一个 JFrame。

这是我的 Guest Frame 类

public class GuestFrame extends javax.swing.JFrame {

    private List<String> list = new ArrayList<String>();

    public GuestFrame(){
         initComponents();             
    }
}

我将数据添加到 arraylist 的方法是将 JList 中的选定项目添加到逐一附加的购物车中,如下所示:

private void kButton1ActionPerformed(java.awt.event.ActionEvent evt) {  
    String receiveList = lstEntitety.getSelectedValue().toString(); 
    list.add(receiveList); 
    //System.out.println(list.toString()); outputs all the data added

以及该列表的 getter 函数:

public List<String> getList() {
    return list;
}

我想做的是在我的另一个 JFrame 中显示所有添加的食物

public class CartFrame extends javax.swing.JFrame {
private GuestFrame food;
     public CartFrame() {     
     initComponents();
     food= new GuestFrame();
     List<String> list = food.getList();

     //Here I am trying to output the arraylist that I appended in prevous frame
     jTextArea1.setText(list.toString());

}
<小时/>

进入CartFrame的结果是数组似乎输出空[]

我想这可能是因为在 guest 框架构造函数中覆盖了它?

我不知道如何解决这个问题。

最佳答案

我认为解决此案有3种选择,
1.可以使用数据库来操作列表数据。所以GuestFrame CartFrame 用于保存数据可以从数据库获取数据而不依赖于其他类属性。

2.第二,可以使用java.util.Properties操作列表数据。

Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("xyz.properties");
prop.load(in);

将数据保存在GuestFrame中:

prop.setProperty("dataSize", "(list.lenght())");
prop.setProperty("data1", "...");
prop.setProperty("data2", "...");
prop.setProperty("...", "...");
....
prop.store(new FileOutputStream("xyz.properties"), null);

加载CartFrame中的数据:

prop.getProperty("dataSize");
//loop i=0 until < dataSize
list.add(prop.getProperty("data"+i));


3.最后一个选项是 private List<String> list = new ArrayList<String>();变成静态private static List<String> list = new ArrayList<String>(); ,这样其他类就可以从 GuestFrame 访问列表属性直接使用,无需创建实例。

  public class GuestFrame extends javax.swing.JFrame {
    private static List<String> list = new ArrayList<String>();

    public GuestFrame(){
       initComponents();    

    }

    public static List<String> getList() {
       return list;
    }
 }


 public class CartFrame extends javax.swing.JFrame {

 public CartFrame() {     
   initComponents();
   List<String> list = GuestFrame.getList();
   cText.setText(list.toString());
   jLabel3.setText(list.toString());
 }
}

静态属性直接与类关联。即使不创建类的实例也可以调用它们,例如:ClassName.propertyName

关于Java 将 ArrayList 传递给另一个 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53983811/

相关文章:

java - Spring Data MongoDB - 忽略空对象

java - 如何在 java swing 中以线程安全的方式初始化 gui 对象?

java - java 计算排序算法的比较次数并将其添加到数组列表中

java - 如何删除下面java代码中数组列表中每个值之前的空格

java - 在java中将标准输出流设置为默认值

java - 如何根据容器的宽度动态设置组件扩展属性

java - JUnit、JMock、JUnitRuleMockery : what am I missing

java - 调用 repaint() 绘制新形状,但保留旧形状

java - 更改 JComboBox 箭头的背景颜色

java - 我可以比较数组与数组的 ArrayList 的相等性吗?