Java将ArrayList传递给另一个JFrame

时间:2018-12-31 05:11:07

标签: 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 frame构造函数中它被重写了吗?

我不确定如何解决此问题。

1 个答案:

答案 0 :(得分:1)

我认为有3种解决方案,
1.可以使用数据库来操作列表数据。因此#parent { width: 200px; height: 200px; background-color: red; } #child { position: fixed; top: 50px; left: 50px; width: 100px; height: 100px; z-index: 2; background-color: blue; } #other { position: fixed; top: 25px; left: 25px; width: 50px; height: 50px; z-index: 1; background-color: green; }用于保存数据,而<div id="parent"> <div id="child"></div> </div> <div id="other"></div>可以从数据库获取数据而无需依赖其他类属性。

2.其次,可以使用java.util.Properties来操作列表数据。

GuestFrame

将数据保存在CartFrame中:

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


3.最后一种选择是使CartFrame成为静态prop.getProperty("dataSize"); //loop i=0 until < dataSize list.add(prop.getProperty("data"+i)); ,这样其他类就可以直接从private List<String> list = new ArrayList<String>();访问list属性,而无需创建实例。

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


GuestFrame

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