Как передать значение (массив или массив) из 1 панели в другую? - PullRequest
1 голос
/ 18 августа 2010

Это мой основной код класса:

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 ]

3 голосов
/ 18 августа 2010

Вы действительно не должны хранить значения в объекте панели («представление»), но должны создавать отдельный класс, который содержит значения («модель»).

Затем вы можете передать ссылку на модельдля обеих панелей, и если одна панель изменит значения в классе модели, другая также увидит изменения.Следующий простой пример - показать идею в коде.Ваша модель будет выглядеть по-другому, но она должна дать представление о том, как ее реализовать, создать и использовать.

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);
}
0 голосов
/ 18 августа 2010

Вы можете предоставить ссылку на вторую панель на первую панель.Что-то вроде:

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

Первая панель может затем сохранить это и использовать его позже для вызова методов из второй панели.

...