|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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();
}
});
}
}
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()); 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) {}
}
Codice:
myListener listener = new myListener(tempItem); trovaAllegatiBloccatiFrame.addInternalFrameListener(listener); DIversa gestione dei puntatori negli adapter?' |
|
|
|
|
|
#2 |
|
Senior Member
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 |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Sicuramente sbagli qlcosa da qlche altra parte, quel codice funziona benissimo:
Codice PHP:
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals Ultima modifica di anx721 : 25-02-2004 alle 15:14. |
|
|
|
|
|
#4 |
|
Senior Member
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...
|
|
|
|
|
|
#5 |
|
Senior Member
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 |
|
|
|
|
|
#6 |
|
Senior Member
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");
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:23.



















