title: Is it OK to change a model outside the Swing worker thread?
body: <p>In a "serious" Java GUI app, you'll have models behind many of your GUI elements: A <code>DocumentModel</code> backing a <code>JEditorPane</code>, for example, or a <code>ListModel</code> behind a <code>JList</code>.</p>
  
  <p>We're always told not to make GUI changes from outside the Swing worker thread and given <code>SwingUtilities.invoke...()</code> for working around that. Fine, I can live with that! It's certainly necessary (and works well) when changing attributes of GUI components directly.</p>
  
  <p>Ideally, most of my GUI-visible changes will be to models, not to JComponents, anyway. But because they're GUI-visible, do they "count" as GUI changes? I.e. do change events and listeners provide the necessary decoupling, or do model changes need to be wrapped in <code>invoke...()</code> as well?</p>
  
  <p>Probably old hat to Swing pros, but I wasn't able to find any reference that clearly states one way or another.</p>