如何将值(数组或arraylist)从1个窗格传递到另一个窗格?

时间:2010-08-18 09:35:05

标签: java swing oop jpanel

这是我的主要类代码:

public static void main(String[] args) {

 JFrame f= new JFrame ("My Frame");
 f.setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE);

 JTabbedPane tp = new JTabbedPane();
 tp.addTab("Pane1", new PaneFirst());
 tp.addTab("Pane2", new PaneSecond());

 f.add(tp);
 f.pack();
 f.setVisible(true);
 }

在PaneFirst中,我有一个用户输入值(文本字段)列表,假设我有5.我将每个值存储到一个数组(或者可能是arraylist)中。如何将这5个值从PaneFirst传递给PaneSecond?

(对不起,我是Java和面向对象编程语言的新手)

2 个答案:

答案 0 :(得分:3)

您确实不应该将值存储在窗格对象(“view”)上,而是创建一个包含值(“model”)的单独类。

然后,您可以将模型的引用传递给两个窗格,如果一个窗格更改了模型类的值,另一个窗格也会看到更改。以下简单示例是在代码中显示该想法。您的模型看起来会有所不同,但它应该提供有关如何实现,创建和使用它的想法。

public class Model {
   private List<String> values = new ArrayList<String>();
   public void add(String s) {
      values.add(s);
   }
   public void remove(String s) {
      values.remove(s);
   }
   public void get(i) {
      values.get(i);
   }
   // ...

}   

public static void main(String[] args) {

 JFrame f= new JFrame ("My Frame");
 f.setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE);

 JTabbedPane tp = new JTabbedPane();
 Model model = new Model();
 tp.addTab("Pane1", new PaneFirst(model));
 tp.addTab("Pane2", new PaneSecond(model));

 f.add(tp);
 f.pack();
 f.setVisible(true);
}

答案 1 :(得分:0)

您可以将第二个窗格的引用提供给第一个窗格。类似的东西:

 PaneSecond pane2 = new PaneSecond();
 JTabbedPane tp = new JTabbedPane();
 tp.addTab("Pane1", new PaneFirst(pane2));
 tp.addTab("Pane2", pane2);

然后第一个窗格可能会出现此问题,稍后再使用它来调用第二个窗格中的方法。