Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [JAVA] JComboBox Exception

    ciao a tutti,
    ho problema sui JComboBox, devio assolutamente gestire le eccezzioni che saltano al momento in cui trascino il mouse da un item ad un altro del combo, e quando uso i tasti direzionali e il TAB per muovermi all'interno del combo.
    ho provato con un try & catch che gestisce "Exception" ma non mi risolve il problema!

    cosa devo fare?
    www.matteosteri.it

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Quali sono le eccezioni, in quali metodi vengono sollevati???

    (Siate più esaustivi quando chiedete aiuto :quote: )

  3. #3
    L'eccezione che viene sollevata è la seguente:
    codice:
    Exception occurred during event dispatching:
    java.lang.NullPointerException
            at javax.swing.plaf.basic.BasicComboBoxUI.selectNextPossibleValue(BasicComboBoxUI.java:1030)
            at com.sun.java.swing.plaf.windows.WindowsComboBoxUI.selectNextPossibleValue(WindowsComboBoxUI.java:73)
            at javax.swing.plaf.basic.BasicComboBoxUI$DownAction.actionPerformed(BasicComboBoxUI.java:1349)
            at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1384)
            at javax.swing.JComponent.processKeyBinding(JComponent.java:2078)
            at javax.swing.JComponent.processKeyBindings(JComponent.java:2115)
            at javax.swing.JComponent.processKeyEvent(JComponent.java:2041)
            at javax.swing.JComboBox.processKeyEvent(JComboBox.java:1060)
            at java.awt.Component.processEvent(Component.java:3553)
            at java.awt.Container.processEvent(Container.java:1164)
            at java.awt.Component.dispatchEventImpl(Component.java:2593)
            at java.awt.Container.dispatchEventImpl(Container.java:1213)
            at java.awt.Component.dispatchEvent(Component.java:2497)
            at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2155)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2135)
            at java.awt.Container.dispatchEventImpl(Container.java:1200)
            at java.awt.Window.dispatchEventImpl(Window.java:926)
            at java.awt.Component.dispatchEvent(Component.java:2497)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:85):
    Mentre il codice del programma (molto sminuito) è il seguente
    codice:
    private JComboBox combo = new JComboBox ();
    ...
    ...
    combo.addActionListener (new  ActionListener() 
    {
    	public void actionPerformed (ActionEvent e)
    	{
    		combo_actionPerformed (e);
    	}
    });
    ...
    ...
    private void combo_actionPerformed (ActionEvent e) 
    {
    	switch (combo.getSelectedIndex ())
    	{
    		case 0:	label.setText ("Scegliere opzione");
    		break;
    
    		case 1:	label.setText ("Item_1");
    		break;
    
    		case 2:	label.setText ("Item_2");
    		break;
    	}
    	style ();
    }
    ...
    ...
    private void style () 
    {
    	try
    	{
    		UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		SwingUtilities.updateComponentTreeUI(this);
    	}
    	catch (Exception ex)
    	{
    		System.err.println("Impossibile impostare il LookAndFeel del sistema");
    	}
    }
    il problema ho trovato che sta nel metodo style() infatti se commento il suo corpo il programma non solleva eccezioni, però io volevo utilizzare lo stile Windows e non quello Java. come devo fare?
    Beh ora non penso che non sia stato esaustivo!
    www.matteosteri.it

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Il cambiamento del Lokk&Feel provoca spesso problemi, e acluni dipendono da bug delle Swing, come documentato sul sito della sun; ho trovato un bug report che parla di una NullPointerExcpetion durante il cambiamento del Look6Feel di JComboBox, ma si riferisce al jdk 1.2.2, tu hai questa versione? Un utente suggerisce di rendere la JComboBox non editabile durante il cambiamento:

    Codice PHP:
    if(combo.isEditable())
        {
          
    combo.setEditable(false);
          
    style();  
          
    combo.setEditable(true);
        } 
    Ma non so se risolve il problema. Quello che ti posso dire che con la versione che ho io (jdk 1.4.2) il tuo codice non mi lancia eccezioni e il look&Feel cambia senza problemi


  5. #5
    io sto usando la 1.3.1 perchè con la 1.4.1 avevo dei problemi e alcune cose non mele faceva fare. tipo l'utilizzo di un programma esterno che ho creato in C per la parte testuale del programma che permette di visualizzare una schermata fino alla pressione di un tasto, che in Java non sapevo come fare. Cavolo invece di migliorare con la 1.4.1. si và peggiorando!!! boh!

    Comunque grazie per l'aiuto e se magari mi dai qualche dritta per la pressione del tasto per continuare mi risolveresti due problemi insieme perchè così passerei alla 1.4.1 e risolverei la questione dei JComboBox
    www.matteosteri.it

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Che intendi per schermata? Un pannello nel Frame principale? O intendi una schermata sulla consolle?

  7. #7
    in pratica per la versione testuale del mio programma ho bisogno di far visualizzare una determinata situazione delle prenotazioni avvenute su un volo aereo, che farà vedere un riassunto tipo:

    prima classe
    lato finestrino ==> 4 posti disponibili
    lato corridoio ==> 7 posti disponibili

    seconda classe
    lato finestrino ==> 4 posti disponibili
    lato corridoio ==> 7 posti disponibili
    centrali ==> 10 posti disponibili

    quindi vorrei che la schermata di DOS (che penso sia quella che tu chiami consolle) in cui il tutto appare, resti come sia fino alla pressione di un tasto.

    press any key to continue ...

    come posso farlo con Java, senza l'ausilio di programmi esterni e quindi senza violare così la portabilità del programma finale?
    www.matteosteri.it

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Far continuare dopo la pressione di un qualsiasi carattere non so come si possa fare perchè non c'è un'interfaccia grafica e quindi non ci sono componenti verso cui sono indirizzati gli eventi della tastiera, e non so se in effetti si possa fare, se però ti accontenti del messaggio : "Premi invio per continuare":

    Codice PHP:
    System.out.println("Premi invio per continuare");
    BufferedReader b = new BufferedReader(new InputStreamReader(System.in)); 
    b.readLine(); 

  9. #9
    se funziona correttamente, va bene lo stesso!
    ora lo provo grazie mille
    www.matteosteri.it

  10. #10
    funziona perfettamente grazie!

    però a questo punto ti devo chiedere un ultimissima cosa! per non violare la portabilità del mio programma mi servirebbe qualcosa che si comportasse come un clear screen, questo come il "premere un tasto per continuare ..." prima lo facevo tramite il richiamo di un programma fatto in C che però è in un linguaggio macchina e quindi non è portabile.

    conosci qualche modo per risolvere il problema oltre a fare un
    codice:
    System.out.println ()
    per circa 25 volte?
    www.matteosteri.it

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.