Intendi i "mnemonics" o gli "acceleratori"??Originariamente inviato da Patrick Jane
E per gestire le "scorciatoie da tastiera" sui JMenuItem?
Comunque vedi Enabling Keyboard Operation che li spiega.
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
Come si evince, in questo modo, ad ogni selezione del colore viene lasciato uno spazio.. c'è un modo per evitarlo?codice:document.insertString(document.getLength()," ",document.getStyle("color"));
No, io direi che stai andando un po' fuori strada.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.
Prova questo semplice programmino:
Prova a fare le seguenti cose: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(); } } }
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.

Rispondi quotando