Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-02-2004, 13:38   #1
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Java, puntatori e adapter...

Mi sono scontrato con uno strano problema:

Codice:
class RicercaBloccatiAction extends AbstractAction
  {
  	
  	
  	JMenuItem tempItem ;
  	
  	RicercaBloccatiAction()
  	{
  		super("Allegati bloccati");  				
  		
  	}
  	
  	public void actionPerformed(ActionEvent e)
  	{
  		tempItem = (JMenuItem)e.getSource();
  		...
  		....
  			  		
  		TrovaAllegatiBloccatiFrame trovaAllegatiBloccatiFrame = new TrovaAllegatiBloccatiFrame(...);
  		
  		tempItem.setEnabled(false);
   	  
   	  System.out.println("appena disabilitato" + tempItem.getText());
   	     	 	
  		desktop.add(trovaAllegatiBloccatiFrame);
			trovaAllegatiBloccatiFrame.moveToFront();
  
      trovaAllegatiBloccatiFrame.addInternalFrameListener(new InternalFrameAdapter()
      {
        public void internalFrameClosing(InternalFrameEvent ife)  {
         
       	 tempItem.setEnabled(true);
       	 System.out.println("appena abilitato" + tempItem.getText());
         svuotajInternalFrameVector();
       	}
      });
  	}
  }
Praticamente a fronte della scelta da un menu dovevo aprire alcune JInternalFrame e disabilitare
la relativa voce di menu...per poi rabilitarla alla chiusura. Bene, questo codice non mi funzionava!
tempItem puntava sempre all'ultimo menu, nonostante ogni voce avesse un

Codice:
  tempMenuItem.addActionListener(new RicercaBloccatiAction());
Ho dovuto creare una classe
Codice:
  class myListener implements InternalFrameListener {
  	
  	JMenuItem menuItem;
  	
  	public myListener(JMenuItem menuItem) {
  		this.menuItem = menuItem;
  	}	
  	
  	
  	public void internalFrameClosing(InternalFrameEvent e) {
  		menuItem .setEnabled(true);
      System.out.println("appena abilitato" + menuItem .getText());
      svuotajInternalFrameVector();
  	}
  	
  	public void internalFrameActivated(InternalFrameEvent e) {}
	 	public void internalFrameClosed(InternalFrameEvent e) {}
		public void internalFrameDeactivated(InternalFrameEvent e){} 		
		public void internalFrameDeiconified(InternalFrameEvent e) {}		
		public void internalFrameIconified(InternalFrameEvent e) {}		
		public void internalFrameOpened(InternalFrameEvent e) {}  	
  }
e aggiungre il listener (e non l'adapter) al frame:
Codice:
  	myListener listener = new myListener(tempItem);
   	trovaAllegatiBloccatiFrame.addInternalFrameListener(listener);
Dato che nell'altro topic vi siete intrippati con i puntatori e le zone di memoria, mi sapete spiegare questa??
DIversa gestione dei puntatori negli adapter?'
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 12:43   #2
Passy
Senior Member
 
L'Avatar di Passy
 
Iscritto dal: Jul 2000
Città: Vignola (MO)
Messaggi: 316
Interessante Up
__________________
<Asus A8N-E Deluxe> <Amd64 3000+> <Ram 2.5 Gb> <Geffo3> <2 Maxtor 160 Gb RAID 1> <Adsl ZyXEL 645r> <ESS Maestro>
<GNU/Linux Debian Etch>
Wii 1037 4238 6261 1967
Passy è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 14:01   #3
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Sicuramente sbagli qlcosa da qlche altra parte, quel codice funziona benissimo:

Codice PHP:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;


class 
RicercaBloccatiAction extends AbstractAction
  
{
      
      
JDesktopPane desktop;
      
JMenuItem tempItem ;
      
      
RicercaBloccatiAction(JDesktopPane desktop)
      {
          
super("Allegati bloccati");
          
this.desktop = desktop;
          
      }
      
      public 
void actionPerformed(ActionEvent e)
      {
          
tempItem = (JMenuItem)e.getSource();
    
          
TrovaAllegatiBloccatiFrame trovaAllegatiBloccatiFrame = new TrovaAllegatiBloccatiFrame(tempItem.getText());
          
trovaAllegatiBloccatiFrame.setSize(150, 150);
          
trovaAllegatiBloccatiFrame.setVisible(true);
          
          
          
tempItem.setEnabled(false);
         
         
System.out.println("appena disabilitato" + tempItem.getText());
                     
          
desktop.add(trovaAllegatiBloccatiFrame);
            
trovaAllegatiBloccatiFrame.moveToFront();
  
      
trovaAllegatiBloccatiFrame.addInternalFrameListener(new InternalFrameAdapter()
      {
        public 
void internalFrameClosing(InternalFrameEvent ife)  {
         
            
tempItem.setEnabled(true);
            
System.out.println("appena abilitato" + tempItem.getText());
         
           }
      });
      }
  }


class 
TrovaAllegatiBloccatiFrame extends JInternalFrame{

public 
TrovaAllegatiBloccatiFrame(String title){
        
super(title,
           
true, //resizable
           
true, //closable
           
true, //maximizable
          
true);//iconifiable
          
}
}


public class 
Ciao extends JFrame{

    
JDesktopPane desktop;

    public 
Ciao(){
        
addWindowListener(new WindowAdapter(){
            public 
void windowClosing(WindowEvent e){
                
System.exit(0);
            }
        });

        
desktop = new JDesktopPane();
        
getContentPane().add(desktop);
        
setTitle("Ciao");
        
setSize(340, 340);
        
        
JMenuBar bar = new JMenuBar();
        
JMenu menu = new JMenu("uffa");
        
JMenuItem item = new JMenuItem("ciao 1");
        
item.addActionListener(new RicercaBloccatiAction(desktop));
        
menu.add(item);
        
bar.add(menu);
        
        
item = new JMenuItem("ciao 2");
        
item.addActionListener(new RicercaBloccatiAction(desktop));
        
menu.add(item);
        
        
item = new JMenuItem("ciao 3");
        
item.addActionListener(new RicercaBloccatiAction(desktop));
        
menu.add(item);
        
        
getContentPane().add(bar, "North");

        
setLocation(0, 0);
        
validate();
        
show();
        
    }
    
    public static 
void main(String[] args){
        new 
Ciao();
        
    }
} 
ciao.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals

Ultima modifica di anx721 : 25-02-2004 alle 14:14.
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 15:31   #4
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
mmm...c'è da dire che il problema ce l'ho sotto java 1.1.8...mi sa che era un bacuzzo...
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 15:39   #5
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Non saprei, ma mi sembra strano che ci sia un simile bug, comqunue io suo 1.4.2.

Ad ogni modo prova a salvare il codice di esempio che ti ho mandato in un file Ciao.java e mandalo in esecuzione per vedere se ti funziona pure a te,

ciao
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 26-02-2004, 09:24   #6
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
L'unica cosa che cambia è che i menù da disattivare e attivare li creo dinamicamente in base ad una query, con questa funzione:

Codice:
protected void populateMenu(String query,ActionListener menuAction, String actionCommand, JMenu menu ){
		
		String tempString[]={""};
		try
    {    	
	    Vector result = dbsSelect.select(query,true,-1);
	    JMenuItem tempMenuItem;

	    if(result.size()!=0)
	    {
  		  for(int i=0; i<result.size(); i++)
  		  {
  		    tempString=(String[])result.elementAt(i);
  		  	if(tempString[0].length()!=0)
  		  	{
    		    tempMenuItem=new JMenuItem(tempString[0]);
    		    tempMenuItem.addActionListener(menuAction);
    		    tempMenuItem.setActionCommand(actionCommand);
            menu.add(tempMenuItem);
          }
        }
        result.removeAllElements();
        result = null;
      }
      else
      	menu.add(new JMenuItem("no entry found"));
    }
    catch(Exception exp)
    {
		  System.out.println("impossibile creare uno dei menu degli allegati: "+exp.toString()+tempString[0]);
      JOptionPane.showMessageDialog(this,"Si è verificato qualche errore durante la creazione del menù degli atti inviati e in iter...\n"+
                                         "Il problema non dovrebbe impedire il normale svolgimento delle operazioni");
    }
    
	}
cn73 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Già record di vendite su Amazon p...
Eni mette un tetto ai prezzi dei carbura...
BYD Seagull (Dolphin Surf), l'elettrica ...
Multa milionaria per un data center del ...
F-Droid 2.0 si aggiorna con una nuova gr...
Microsoft ridisegna Copilot: dalla chat ...
Volkswagen porterà 20 videogiochi...
Troppa IA storpia: OpenAI licenzia in tr...
Marathon, Bungie svela i contenuti dell'...
Autunno, tempo di potature: i tagliasiep...
Meta Muse, due sviluppatori riescono a o...
Google AI Pro gratis: festa a sorpresa p...
MacSync colpisce macOS usando i calendar...
L'agente IA cancella 48 mila file in 103...
Jensen Huang avverte: l'AI può aiutare a...
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: 07:12.


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