Originariamente inviato da Patrick Jane
E per gestire le "scorciatoie da tastiera" sui JMenuItem?
Intendi i "mnemonics" o gli "acceleratori"??
Comunque vedi Enabling Keyboard Operation che li spiega.

Originariamente inviato da Patrick Jane
codice:
document.insertString(document.getLength()," ",document.getStyle("color"));
Come si evince, in questo modo, ad ogni selezione del colore viene lasciato uno spazio.. c'è un modo per evitarlo?
insertString() serve per inserire "qualcosa" nel document. Se fai l'insert di uno spazio e mi dici "non voglio lo spazio" .... quale è il senso allora di questo inserimento?

Originariamente inviato da Patrick Jane
La domanda è.. come faccio a far in modo che, alla prima pressione del bottone "Grassetto" il testo diventi grassetto (quindi true), e alla pressione successiva diventi "false"?

PS: Ho visto i metodi isBold() ecc. penso facciano al caso mio.. solo che non ho capito bene come usarli.
No, io direi che stai andando un po' fuori strada.
Prova questo semplice programmino:

codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;

public class TestFrame extends JFrame {
    public TestFrame() {
        super("Test Frame");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600, 400);

        JTextPane textPane = new JTextPane();
        JScrollPane scrollPane = new JScrollPane(textPane);

        JButton redColorButton = new JButton(new MyForegroundAction("Colore rosso", Color.RED));
        JButton greenColorButton = new JButton(new MyForegroundAction("Colore verde", Color.GREEN));
        JButton blueColorButton = new JButton(new MyForegroundAction("Colore blu", Color.BLUE));

        JPanel buttonsPanel = new JPanel(new GridLayout(1, 0));
        buttonsPanel.add(redColorButton);
        buttonsPanel.add(greenColorButton);
        buttonsPanel.add(blueColorButton);

        getContentPane().add(buttonsPanel, BorderLayout.NORTH);
        getContentPane().add(scrollPane, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                TestFrame f = new TestFrame();
                f.setVisible(true);
            }
        });
    }
}


class MyForegroundAction extends StyledEditorKit.ForegroundAction {
    public MyForegroundAction(String testo, Color colore) {
        super(testo, colore);
    }

    public void actionPerformed(ActionEvent e) {
        super.actionPerformed(e);

        // Tutto questo (la estensione di StyledEditorKit.ForegroundAction)
        // principalmente solo per poter ridare il focus.
        JTextComponent textComp = getTextComponent(e);
        if (textComp != null) {
            textComp.requestFocusInWindow();
        }
    }
}
Prova a fare le seguenti cose:
1) Scrivi del testo, poi seleziona una porzione e clicca su uno dei pulsanti. Togli ovviamente la selezione (altrimenti non vedi il colore) e vedrai che ha cambiato colore a quella porzione.

2) Metti il caret in un certo punto, qualunque colore ci sia in quel punto, se premi uno dei pulsanti e poi inizi a scrivere, scrive con quel colore che hai appena selezionato.

Quelle "action" in StyledEditorKit (parlo della ForegroundAction e delle svariate altre) sono fatte apposta per cose di questo tipo.