【发布时间】:2013-12-16 16:22:12
【问题描述】:
按照你的建议,我重写了我的问题。这是我的问题。我有框架,添加了 2 个面板。在第一个面板中,我创建了一个 Generator 对象。在Generator 类中,我有对象和计时器的列表,它正在调用函数addItem(),它将新对象添加到我的列表中。第二个面板(在框架中创建)需要打印包含在我的数组中的对象列表。如果这些数组会改变这个面板需要自动修复。如果看起来太混乱,请查看代码片段
JFRAME 类
public class MainFrame extends JFrame{
private MapaSwiata mapa;
private MyPanel myPanel;
public MainFrame(){
//....
JPanel panel = new JPanel(new BorderLayout());
this.getContentPane().add(panel);
mapa = new MapaSwiata();
myPanel = new MyPanel();
panel.add(mapa,BorderLayout.CENTER);
panel.add(menu,BorderLayout.EAST);
//...
}
在 JFrame 类中创建第一个面板的类
public class MapaSwiata extends JPanel{
Generator gs;
public MapaSwiata(){
//...
gs = new Generator(this);
//...
}
}
CLASS 生成器(带有需要观察变化的 ArrayList)
public class Generator{
ArrayList<Object> sampleArray;
public Generator(JPanel p){
this.s = new ArrayList<Samolot>();
this.p = p;
generatorTimer = new Timer(40, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addItem();
p.repaint();
}
});
generatorTimer.start();
}
public addItem(){
//....
}
}
最后一类 CLASS MyPanel - 更改我的 ArrayList 时需要重新绘制的面板
public class MyPanel extends JPanel{
JLabel label1;
public MyPanel(){
// to do:
// print a ArrayList<Object> sampleArray here in JLabels
// if sampleArray has been changed - my panel repaints itself
}
}
所以我的问题是:
1. 将我的班级Generator 中的sampleArray 传递到此面板进行打印的最佳方法是什么
2. where/how/what listeners 让他通知我上一堂课MapaSwiata中创建的对象的变化
【问题讨论】:
标签: java events arraylist listener parameter-passing