Pagina 1 di 1
Problema con jMenuItem
Inviato: lunedì 3 marzo 2008, 6:22
da The_echelon
Salve a tutti!
Stavo facendo una semplice agenda in java (con netbeans).
Mi sono creato un menu con un jMenuItem, il quale vorrei che cancelli tutti i jTextField.
Le istruzioni sono queste:
Codice: Seleziona tutto
private void jMenuItem1MouseClicked(java.awt.event.MouseEvent evt) {
// pulisci schermo
jTextArea1.setText("");
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
}
Ma quando avvio l'applicazione non ha nessun effetto.
Mentre creandomi un pulsante sulla finestra con le stesse istruzioni, funziona, cancellando il contenuto dei jTextField.
Io vorrei che queste operazioni siano svolte da jMenuItem1.....Come posso fare???
Re: Problema con jMenuItem
Inviato: lunedì 3 marzo 2008, 10:38
da joaquin
Secondo me è l'evento che sbagli se procedi nel seguente modo funziona al 100%:
Se ad esempio hai un JItemMenu che chiamiamo jMenuItem1 e a questo aggiungiamo un ascoltatore di evento a questo item del tipo
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText("");
}
funziona o addirittura puoi chiamare un metodo in questo modo
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancella(evt);
}
private void cancella(java.awt.event.ActionEvent evt) {
jTextField1.setText("");
}
Re: Problema con jMenuItem
Inviato: lunedì 3 marzo 2008, 14:55
da The_echelon
Dovrei fare cosi? ???
Codice: Seleziona tutto
private void jMenuItem1MouseClicked(java.awt.event.MouseEvent evt) {
// pulisci schermo
jMenuItem1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jTextField1.setText("");
}
}
}
Perchè mi ha questo errore:
Codice: Seleziona tutto
/home/desktop/NetBeansProjects/agenda/src/finestra.java:305: ')' expected
Dove ho sbagliato?
Re: Problema con jMenuItem
Inviato: martedì 4 marzo 2008, 0:32
da ElFranxo
Ciao, direi che se vai alla riga 305 controlla che non manchi qualche parentesi..magari evidenzia quale è così ci risulta più facile capire dove sta l'inghippo.
Comunque con NetBeans hai una comodissima gestione degli eventi nel riquadro laterale quando implementi l'interfaccia grafica, dovrebbe bastare un doppio click sull'evento corrispondente nell'elenco per far generare del codice automaticamente, vuoto chiaramente, da riempire a piacimento.
EDIT:
ti manca una parentesi tonda chiusa ")" alla terza riga...prova con:
Codice: Seleziona tutto
private void jMenuItem1MouseClicked(java.awt.event.MouseEvent evt) {
// pulisci schermo
jMenuItem1.addActionListener(new java.awt.event.ActionListener() )
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jTextField1.setText("");
}
}
}
Re: Problema con jMenuItem
Inviato: martedì 4 marzo 2008, 4:46
da The_echelon
Ho provato ag aggiungere una parentesi come detto da ElFranxo a:
Codice: Seleziona tutto
jMenuItem1.addActionListener(new java.awt.event.ActionListener() )
Ma cosi facendo mi dice che non trova il main e non funziona ???
Cos'altro posso fare?
Re: Problema con jMenuItem
Inviato: martedì 4 marzo 2008, 9:49
da ElFranxo
Come hai creato il progetto?
Hai fatto un progetto vuoto con dentro una JFrame con incluso il main e poi da lì hai inizializzato tutti i componenti?
Se non ti trova il main probabilmente stai avviando la classe sbagliata o l'hai assegnata come main class erroneamente.
Controlla questi settaggi.
Altrimenti posta tutta la classe (good)
Re: Problema con jMenuItem
Inviato: mercoledì 5 marzo 2008, 1:07
da IppatsuMan
Il metodo di Joaquin è corretto, mancano solo un paio di parentesi (una graffa per terminale lo scope
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText("");
}
});
Idem per il secondo codice che ha proposto:
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancella(evt);
}
});
private void cancella(java.awt.event.ActionEvent evt) {
jTextField1.setText("");
}
Le classi create "al volo" in questo modo sono dette "classi anonime" (o "anonymous classes" per gli anglofili).