Update problems
From: Abs (abs2_at_yahoo.com)
Date: 10/29/04
- Next message: Chas Douglass: "Re: Jtable header clickable?"
- Previous message: Gary V: "GridBagConstraints anchor dilemma"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 29 Oct 2004 20:35:33 +0200
Hi!
I have a JPanel implementing the Observer interface (SlideshowView). It
observes a model class extending Observable (Slideshow). Here it is the
code (I have taken out the unnecessary parts):
public class Slideshow extends Observable {
private String fName;
private String fAuthor;
private java.util.Date fDate;
private Template fTemplate;
private File fMusic;
private Transition fTransition;
private int fDelay;
private boolean fShowText;
private File file;
private boolean unsaved;
private DefaultListModel listmodel;
public Slideshow() {
fName="Untitled";
fAuthor="Anonymous";
fDate=new java.util.Date();
listmodel=new DefaultListModel();
unsaved=true;
fTemplate=new Template();
fTemplate.setBackground(SystemColor.black);
Holder r=new Holder(1,1,98,98);
fTemplate.add(r);
fTransition=TransitionFactory.getRandomTransition();
fDelay=1;
fShowText=false;
}
....
public void addElement(Object obj) {
listmodel.addElement(obj);
unsaved=true;
setChanged();
notifyObservers();
}
public int size() {
return listmodel.size();
}
Here it is the code for the Observer:
public class SlideshowView extends JPanel implements View, Observer {
....
private Slideshow slideshow;
....
public void setModel(Slideshow slideshow) {
this.slideshow=slideshow;
slideshow.addObserver(this);
}
....
public void update(Observable arg0, Object arg1) {
Slideshow slideshow=(Slideshow)arg0;
namelabel.setFont(namelabel.getFont().deriveFont(Font.BOLD));
namelabel.setText(slideshow.getName());
authorlabel.setText("Author: "+slideshow.getAuthor());
sizelabel.setText("Size: "+slideshow.size()+" photo(s)");
SimpleDateFormat formatter=new SimpleDateFormat("EEE, d MMM, yyyy 'at'
HH:mm");
String date2=formatter.format(slideshow.getDate());
datelabel.setText("Created: "+date2);
if ((slideshow.getMusic()!=null) && (!"".equals(slideshow.getMusic()))) {
musiclabel.setText(slideshow.getMusic().getName());
} else {
musiclabel.setText("none");
}
transitionlabel.setText(slideshow.getTransition().toString());
preview.setTemplate(slideshow.getTemplate());
}
}
The problem I have is that the panel shows all the correct data from the
slideshow object except its size (which depends from the size of its
ListModel). It returns '0', which is wrong. It think the reason is when
the app updates the panel and asks the slideshow data, the slideshow's
ListModel is still adding elements to itself and returns the initial
value for its size, which is '0'. Am I wrong ? Can someone help me to
solve this, please ?
Thanks in advance
- Next message: Chas Douglass: "Re: Jtable header clickable?"
- Previous message: Gary V: "GridBagConstraints anchor dilemma"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]