Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-10-2007, 18: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, 18: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 09-10-2007, 23: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, 19: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, 20: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


HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
Da Microsoft due nuovi Surface Laptop 5G...
Processore NVIDIA N1X slittato al 2026: ...
Tesla, nel secondo semestre più a...
One UI 8 Watch arriva su Galaxy Watch Ul...
Moon Studios scarica Xbox: No Rest for t...
L'idea di JPMorgan: prestiti e finanziam...
Candy Crush: non solo il gioco! Arriva a...
Ecco come siamo riusciti a raccogliere l...
Agentic AI Framework: l'IA basata su age...
Offerte Amazon pazze di luglio: portatil...
Scoppierà la bolla AI? Gli econom...
Il potere dei coupon e delle offerte Ama...
Tesla fotovoltaica, funziona davvero? Un...
Ribassi clamorosi sui robot Narwal: scon...
Dopo OpenAI anche Gemini Deep Think conq...
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: 01:05.


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