Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    18

    Gestione eventi in Java

    Ciao,

    sto studiando java e per far pratica ho iniziato a sviluppare un oggetto calendario composto da un combo per la selezione del mese e da n pulsanti uno per ogni giorno del mese.
    Questo perchè sto seguendo un libro e quindi mi serviva per far pratica con swing.

    E fin qui sono sopravvissuta:mavieni:

    Poi però è arrivata la gestione degli eventi.
    Il mio oggetto è implementato nel modo seguente.
    Frame principale dell'applicazione con pannello di tipo BorderLayout con all'interno un pannello FlaowLayout per l'oggetto Jcombobox e un pannello a griglia per i pulsanti.
    Io vorrei intercettare la selezione sul combo e aggiornare la disposizione dei pulsanti di conseguenza.
    L'implementazione dei metodi è ok. con delle banali println posso vedere che il flusso è corretto e si attiva il metodo ItemStateChanged ma come devo implementare il metodo per il refresh degli oggetti????
    al momento mi va in errore con tutta una serie di parolacce e sproloqui che sinceramente non mi dicono nulla e di cui non capisco minimamente il significato
    (però la schermata piena di scritte incute una certa soggezione, devo ammettere....)

    grazie in anticipo a chi volesse rispondermi

  2. #2
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    413

    Re: Gestione eventi in Java

    Originariamente inviato da Ivana72
    Poi però è arrivata la gestione degli eventi.
    Il mio oggetto è implementato nel modo seguente.
    Frame principale dell'applicazione con pannello di tipo BorderLayout con all'interno un pannello FlaowLayout per l'oggetto Jcombobox e un pannello a griglia per i pulsanti.
    Io vorrei intercettare la selezione sul combo e aggiornare la disposizione dei pulsanti di conseguenza.
    L'implementazione dei metodi è ok. con delle banali println posso vedere che il flusso è corretto e si attiva il metodo ItemStateChanged ma come devo implementare il metodo per il refresh degli oggetti????
    al momento mi va in errore con tutta una serie di parolacce e sproloqui che sinceramente non mi dicono nulla e di cui non capisco minimamente il significato
    (però la schermata piena di scritte incute una certa soggezione, devo ammettere....)

    personalmente non conosco ne le swing ne le awt, perchè non faccio applet, anche se per curiosità un occhio cel'ho buttato un paio di volte.

    innanzitutto quella vomitata di scritte che vedi è sicuramente lo StackTrace, cioè il trace delle chaimate alle ultime funzioni fino all'eccezione.
    dalle prime righe scorrendo verso il basso dovresti vedere i nomi delle funzioni chiamate.

    per quanto riguarda il refresh non vorrei dirti una cazzata ma c'è un metodo paint() che dovrebbe appartenere proprio alla finestra....

  3. #3
    Utente di HTML.it L'avatar di ghinz
    Registrato dal
    May 2001
    Messaggi
    211
    Ma dentro all'ItemStateChanged che cosa ci hai scritto? Magari prova a postare la sfilza di errori che ti saltano fuori, così forse ci capiamo qualcosa.

    Immagino che avrai un metodo che in base al mese ti calcola/crea/dispone i pulsanti dei giorni dentro alla griglia, giusto?

    Ciao
    ghinz

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    18

    Exception....

    ma sono una mareaaaaaaaaaa!
    cmq.....

    Nel metodo ItemStateChanged ho messo solo il richiamo ad un metodo nella classe del pannello principale che mi dovrebbe ridisegnare il controllo.
    L'aggiunta degli oggetti al pannello di contenitore l'ho messa direttamente nei costruttori delle classi secondarie



    Exception occurred during event dispatching:
    java.lang.ArrayIndexOutOfBoundsException
    at java.lang.System.arraycopy(Native Method)
    at java.awt.Container.remove(Container.java:439)
    at javax.swing.JLayeredPane.remove(JLayeredPane.java: 216)
    at java.awt.Container.remove(Container.java:477)
    at javax.swing.JRootPane.setContentPane(JRootPane.jav a:355)
    at javax.swing.JFrame.setContentPane(JFrame.java:550)
    at Calendario2.drawMonth(Calendario2.java:41)
    at Calendario2.selMese(Calendario2.java:50)
    at pnlMesi.itemStateChanged(Calendario2.java:96)
    at javax.swing.JComboBox.fireItemStateChanged(JComboB ox.java:846)
    at javax.swing.JComboBox.selectedItemChanged(JComboBo x.java:883)
    at javax.swing.JComboBox.contentsChanged(JComboBox.ja va:950)
    at javax.swing.AbstractListModel.fireContentsChanged( AbstractListModel.j
    ava:79)
    at javax.swing.DefaultComboBoxModel.setSelectedItem(D efaultComboBoxModel
    .java:86)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.ja va:415)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.j ava:455)
    at javax.swing.plaf.basic.BasicComboPopup$ListMouseHa ndler.mouseReleased
    (BasicComboPopup.java:582)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEven tMulticaster.java:2
    31)
    at java.awt.Component.processMouseEvent(Component.jav a:3717)
    at java.awt.Component.processEvent(Component.java:354 6)
    at java.awt.Container.processEvent(Container.java:116 4)
    at java.awt.Component.dispatchEventImpl(Component.jav a:2595)
    at java.awt.Container.dispatchEventImpl(Container.jav a:1213)
    at java.awt.Component.dispatchEvent(Component.java:24 99)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:2451
    )
    at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:2216)

    at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:2125)
    at java.awt.Container.dispatchEventImpl(Container.jav a:1200)
    at java.awt.Window.dispatchEventImpl(Window.java:912)
    at java.awt.Component.dispatchEvent(Component.java:24 99)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 319)
    at java.awt.EventDispatchThread.pumpOneEvent(EventDis patchThread.java:10
    3)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:84)

  5. #5
    Utente di HTML.it L'avatar di ghinz
    Registrato dal
    May 2001
    Messaggi
    211
    mmmh... :master: a questo punto trovo un po' difficile capirci qualcosa, dovrei conoscere la struttura dell'applicazione.
    Dallo stacktrace si capisce che l'errore ha origine da qui: Calendario2.drawMonth(Calendario2.java:41) , quindi dovresti cominciare a controllare da lì, purtroppo di più non so dirti.

    Se ti può interessare, ti dico come avrei fatto io per fare una applicazione del genere:
    - creo un metodo che accetta in input il numero del mese e restituisce un JPanel che contiene i pulsanti dei giorni belli formattati dentro ad un (ad esempio) GridBagLayout.
    - quando nel combo scegli il mese, prima cancelli il pannello attuale dei giorni, poi ne crei uno nuovo usando il metodo di cui sopra.
    - il Jpanel che hai ottenuto lo aggiungi al tuo JFrame al posto di quello vecchio
    - in teoria non dovresti chiamare nessun metodo di refresh

    Ciao
    ghinz

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    18

    almeno un passo avanti....

    Ho trovato la causa dell'Exception.
    Guardando bene il sorgente mi sono accorta che c'erano due dichiarazioni di oggetto di troppo.

    Adesso che non va più in errore però non fa assolutamente nulla.
    Nel senso che passa da tutti i metodi che devono aggiornare il pannello ma a video non cambia.

    Esiste forse qualche metodo che faccia il refresh???

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    18
    :mavieni: :mavieni: :mavieni: :mavieni: :mavieni:

    FUNZIONAAAAAAAAAAAAAA!

    ce l'ho fatta! grazie cmq per l'interessamento


    mi vu a ca!
    buona serata

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    18
    Ciao ghinz,

    mi sono accorta ora, che mentre tu mi davi la risposta io trovavo la soluzione.
    E di fatto sono giunta alla tua conclusione.

    Ho rimosso il pannello e l'ho riaggiunto avendo scoperto dal forum della sun che esiste il metodo remove (dopotutto se esiste add perchè no il remove???!!?)

    Ora sto provando ad aggiungere un evento per la selezione di uno dei pulsanti.... ma per ora non cerco suggerimenti voglio spaccarmi prima la testa da sola

    grazie ancora

  9. #9
    Utente di HTML.it L'avatar di ghinz
    Registrato dal
    May 2001
    Messaggi
    211
    Ora sto provando ad aggiungere un evento per la selezione di uno dei pulsanti.... ma per ora non cerco suggerimenti voglio spaccarmi prima la testa da sola
    Eheh! :gren: buon lavoro!
    ghinz

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.