这是我的主要类代码:
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和面向对象编程语言的新手)
答案 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);
然后第一个窗格可能会出现此问题,稍后再使用它来调用第二个窗格中的方法。