public void testStyleChanged() { final Style[] changed = new Style[1]; doc = new DefaultStyledDocument() { private static final long serialVersionUID = 1L; @Override protected void styleChanged(final Style style) { changed[0] = style; super.styleChanged(style); } }; styles = (StyleContext) doc.getAttributeContext(); final NamedStyle aStyle = (NamedStyle) doc.addStyle(STYLE_NAME, null); assertEquals(0, styles.getChangeListeners().length); assertEquals(0, aStyle.listenerList.getListenerCount()); final DocumentListener listener = new DocumentListener() { public void insertUpdate(DocumentEvent e) {} public void removeUpdate(DocumentEvent e) {} public void changedUpdate(DocumentEvent e) {} }; doc.addDocumentListener(listener); assertEquals(1, styles.getChangeListeners().length); assertEquals(1, aStyle.listenerList.getListenerCount()); final NamedStyle anotherStyle = (NamedStyle) styles.addStyle("otherStyle", aStyle); assertEquals(1, anotherStyle.listenerList.getListenerCount()); final NamedStyle nullStyle = (NamedStyle) styles.addStyle(null, null); assertEquals(0, nullStyle.listenerList.getListenerCount()); assertNull(changed[0]); aStyle.addAttribute("key", "value"); assertSame(aStyle, changed[0]); doc.removeDocumentListener(listener); assertEquals(0, styles.getChangeListeners().length); assertEquals(0, aStyle.listenerList.getListenerCount()); assertEquals(0, anotherStyle.listenerList.getListenerCount()); }