Ciao,
sto realizzando un editor di testo base con una barra dei menù e una JTextArea centrale. Nella barra ci sono 3 JCheckBoxMenuItem grassetto, corsivo e sottolineato che modificano lo stile del testo dell'area di testo. Il problema è che una volta messi il grassetto o il corsivo non si toglie più. Quando viene cliccata una delle tre voci del menù viene chiamato questo metodo, dovrebbe essere qui l'errore.

codice:
private void cambiaStileFont() {
  int s = Font.PLAIN;
  if (grassetto.isSelected())
    s += Font.BOLD;
  if (corsivo.isSelected())
    s += Font.ITALIC;
  a.setFont(new Font(a.getFont().getFontName(), s, a.getFont().getSize()));
  if (sottolineato.isSelected()) {
    Map<TextAttribute, Integer> fontAttributes = new HashMap<TextAttribute, Integer>();
    fontAttributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
    a.setFont(a.getFont().deriveFont(fontAttributes));
  }
}
So che è una cavolata, ma non riesco a venirne fuori