Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-10-2007, 19:00   #1
alexievic
Member
 
Iscritto dal: Oct 2001
Città: Forlì
Messaggi: 268
[Java] Problema action

Nella mia applicazione c'è una JTextarea utilizzata come editor.
Il problema è nelle actions.

- Prima dichiaro un array di action aggiuntive

Codice:
private Action[] defaultActions = { new NewAction(), new OpenAction(),
            new SaveAction() ... ecc }
- poi inserisco le action in una Hashtable 'commands' che serve per richiamare le action tramite nome all'interno del programma

Codice:
        Action[] actions = getActions();
        for (int i = 0; i < actions.length; i++)
        {
            Action a = actions[i];
            commands.put(a.getValue(Action.NAME).toString(), a);
                }
- il metodo getActions qui sopra è questo:

Codice:
    protected Action[] getActions()
    {
        return TextAction.augmentList(editor.getActions(), defaultActions);
    }
Io apro una JDialog (implementata in un altro file) che ha dentro dei campi di testo JTextField. Il problema che si presenta è che in tutti questi campi non funziona più il copia e incolla tramite tastiera (CTRL+C, ecc).
Commentando la return del metodo getActions tornano funzionanti quindi immagino che sia dovuto a quella riga di codice.
In ogni modo non riesco a spiegarmi perchè quel metodo statico di TextAction vada ad influire sugli altri controlli del programma, se non sbaglio il suo compito non è solo quello di aumentare la lista di action passati come primo argomento con quelle passate come secondo argomento? Perchè vanno a modificare le action degli altri controlli del programma?
__________________
Asus P5K-E | E6600 @3.2ghz | Artic Freezer 7 Pro | 2X1GB Corsair PC6400 | Sparkle nVidia 8800 GTS 320MB | HD Hitachi 320GB SataII | Maxtor 300GB EIDE | DVD Optiarc AD-7170S | Monitor LCD Acer AL1917 19'' | Monitor Philips 109B CRT 19''
alexievic è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2007, 19:49   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E' possibile che sia per questa ragione (estratto dalla documentazione per TextAcion.augment):

"The second list takes precedence over the first list; that is, when both lists contain a command with the same name, the command from the second list is used."

Puoi capire subito se c'è un conflitto di nomi invertendo i parametri della tua invocazione di augmentList

Codice:
return TextAction.augmentList(defaultActions, editor.getActions());
Se le combinazioni predefinite riappaiono allora è un problema di nomi. Altrimenti è un bel mistero. Forse usi gli stessi acceleratori per azioni diverse?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2007, 00:14   #3
alexievic
Member
 
Iscritto dal: Oct 2001
Città: Forlì
Messaggi: 268
Innanzi tutto ti ringrazio per i consigli.
Ho provato ad invertire le due liste ma le cose non cambiano.
Per attivare le action di copia, incolla e taglia in un campo (ho fatto una prova solo li) ho dovuto fare una cosa del genere

Codice:
		JTextField owlurlpathField = new JTextField(30);

		Keymap parent = owlurlpathField.getKeymap();
		Keymap newmap = JTextComponent.addKeymap("KeymapMap", parent);
		KeyStroke u = KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);
		Action actionU = new DefaultEditorKit.CopyAction();
		newmap.addActionForKeyStroke(u, actionU);
		KeyStroke p = KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK);
		Action actionP = new DefaultEditorKit.PasteAction();
		newmap.addActionForKeyStroke(p, actionP);
		KeyStroke x = KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK);
		Action actionX = new DefaultEditorKit.CutAction();
		newmap.addActionForKeyStroke(x, actionX);		
		owlurlpathField.setKeymap(newmap);
In questo modo nel campo suddetto ritornano operative le action interessate, però dovrei farlo in altri 3/4 campi ed immagino esista un altro modo per risolvere il problema dovuto molto probabilmente alla TextAction.augmentList.
__________________
Asus P5K-E | E6600 @3.2ghz | Artic Freezer 7 Pro | 2X1GB Corsair PC6400 | Sparkle nVidia 8800 GTS 320MB | HD Hitachi 320GB SataII | Maxtor 300GB EIDE | DVD Optiarc AD-7170S | Monitor LCD Acer AL1917 19'' | Monitor Philips 109B CRT 19''
alexievic è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2007, 20:06   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il problema non è tanto se esistano alternative (potresti usare la mappa delle azioni dei tuoi componenti per registrare nuove azioni) ma perchè quel getActions non funziona. Io ho provato a guardare ma non mi sembra che a parte il "name clash" esistano altri conflitti che possano comportare l'invalidità delle azioni predefinite fuse con le nuove tramite TextAction.augmentList. Misteri dell'informatica.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2007, 21:51   #5
alexievic
Member
 
Iscritto dal: Oct 2001
Città: Forlì
Messaggi: 268
Ho trovato il problema oggi, ti ringrazio!
Praticamente era colpa di un metodo che attivava e disattivava alcune action condivise (eh, se non sarebbero action!). In pratica le disattivava quando il file non era ancora stato aperto nell'editor e dopo li riattivava. Il problema è che nel dialogo di creazione nuovo progetto poi non funzionavano copia, incolla e taglia all'interno dei JTextField.
Ho risolto facendo un controllo che riattiva le action prima di mostrare il dialogo e poi le ripristina allo stato precedente una volta che viene chiuso. Trattandosi di dialogo modale non vi sono problemi.
Quindi era colpa mia!

Ora però ho un problema ben più complesso da risolvere!
Devo gestire l'undo relativamente a gruppi di modifiche sul document dell'editor.
In pratica utilizzo il metodo replace sul document dell'area di testo per rimpiazzare un testo normale con un testo con attributi (classe AttributeSet) personalizzati più uno per la sottolineatura. Il problema è che l'undo è gestito per ogni singola operazione atomica di modifica sul document e invece la replace non è atomica ed esegue due operazioni (prima elimina poi mette il testo nuovo).
Sto guardando il javadoc delle varie classi di gestione del sistema undo ma ci capisco sempre meno e non ho ancora trovato documentazione o tutorial pratici che spieghino come utilizzare undo/redo su comandi composti.

Comunque mi sa che sono andato un tantino off-topic!
__________________
Asus P5K-E | E6600 @3.2ghz | Artic Freezer 7 Pro | 2X1GB Corsair PC6400 | Sparkle nVidia 8800 GTS 320MB | HD Hitachi 320GB SataII | Maxtor 300GB EIDE | DVD Optiarc AD-7170S | Monitor LCD Acer AL1917 19'' | Monitor Philips 109B CRT 19''
alexievic è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
'Non può essere un robot': l'uman...
Monopattino elettrico Segway Ninebot Max...
Syberia Remastered è disponibile:...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
Jensen Huang e Bill Dally di NVIDIA prem...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v