permaculture playing cards*
The moose likes Swing / AWT / SWT and the fly likes Question Regarding MVC Approach Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Question Regarding MVC Approach" Watch "Question Regarding MVC Approach" New topic

Question Regarding MVC Approach

David Dickinson
Ranch Hand

Joined: Nov 11, 2004
Posts: 66
Hi All,

I'm looking primarily for non-technical replies it's more an opinion based post.

I have implemented the following approach:

// MVC Approach //
Class Model (observable)- holds the collection storing my data. Sets class GUI as an observer.
Class GUI (observer) - displays a table displaying the collection data

When changes are made in the model it uses the following code to alert its observers - setChanged() & notifyObservers().

The GUI implements the update method which is ran when notifyObservers is called, in the update method I call updates on the table to make it refresh.

Is this the correct way to implement MVC? I have heard rumors that my table should be directly observing the model and shouldn't need to call the repaint method.

I'm starting to get confused again so any advice appreciated.

Thank you
Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15299

Speaking specifically about JTable's....

You should create a TableModel and give this model to your JTable. Then you can modify the data in the table model which will notify the table when changes are made.

I think you are just overthinking it a bit. Your design would be good for components that don't really have a model and still need to be updated in some way (JTextFields, JLabels, etc).

GenRocket - Experts at Building Test Data
Scott Delap
Ranch Hand

Joined: Apr 05, 2005
Posts: 73
If your model is used elsewhere in the system, you could also write an adapter that implements table model and uses your model for the actual data storage. Otherwise, I'm with Greg that just using tablemodel would be best.
I agree. Here's the link:
subject: Question Regarding MVC Approach
Similar Threads
designing for multiple layers
Design Pattern for GUI implementation
Adding an action listener to an entire class
update() method problem in Observer interface
FBNX: Gui and Threads, asynchronous Swing action execution and GUI updating.