Note, all these answers are *one* way to do things, there are many others.
Is it the gui, or model, that has state, or is it both
I would say both. The model clearly has state. Your gui will also have state. e.g. a JMenuItem can be enabled or disabled, and you query that state by calling the isEnabled() method. Storing wether your menu item is enabled or disabled in your model as well, is a bad idea as you are duplicating that data.
The state of the gui should be updated to reflect the presence of data in the model. If the model knows nothing about the gui, is this something that is done from the model side by calling a method in the adapter class (suggesting the adapter has to implement an interface?), or is there a mechanism for the gui to register itself as an listener to events fired in the model?
Can we use Observer/Observable pattern? (GUI Observer and Model Observable).
Yep, exactly. Look at the TableModel interface, and the method addTableModelListener. The adaptor class (which, from what I can gather is the Controller in MVC), can listen to your model and update your gui appropriately.
What I should point out is that most applications have many models. They will have a "domain model". This will contain domain objects such as Person, Account, Trade etc... Your whole gui is the view on to your domain model.
Also inside your gui, you will have many more models, PersonTableModels, AccountListModels, TradeTreeModels etc... Lets call these "Swing models". The views for these models are JTables, JList and JTrees etc...
You can keep your swing models up to date with your domain model by the same technique - the Observer pattern.
HTH, D.