Cambiare lo sfondo a jComboBox

di il
11 risposte

Cambiare lo sfondo a jComboBox

Vorrei fare di modo che quando JComboBox è selezionato, sia con la tastiera che col mouse cambi il colore dello sfondo. Come si fa? Grazie mille !

11 Risposte

  • Re: Cambiare lo sfondo a jComboBox

    p0ll0_ ha scritto:


    Vorrei fare di modo che quando JComboBox è selezionato, sia con la tastiera che col mouse cambi il colore dello sfondo. Come si fa?
    Cosa intendi per "selezionato"? a) che c'è un elemento selezionato (detto blandamente, quando getSelectedItem() != null) ; b) che il JComboBox ha ricevuto il "focus"?

    E cosa intendi per "sfondo"? Intendo dire: solo il combobox in sé O ANCHE la lista a discesa? Il setBackground() standard applica un colore a tutto il componente, compresa la lista a discesa.
  • Re: Cambiare lo sfondo a jComboBox

    Presumo che il JComboBox ha ricevuto il focus. Forse sarebbe meglio fare anche la lista a discesa.. Grazie mille !
  • Re: Cambiare lo sfondo a jComboBox

    p0ll0_ ha scritto:


    Presumo che il JComboBox ha ricevuto il focus. Forse sarebbe meglio fare anche la lista a discesa.. Grazie mille !
    Se la questione è sul "focus", basta un FocusListener. Ricevendo il focus imposti il background X, perdendo il focus imposti il background null (=default).
  • Re: Cambiare lo sfondo a jComboBox

    andbin ha scritto:


    p0ll0_ ha scritto:


    Presumo che il JComboBox ha ricevuto il focus. Forse sarebbe meglio fare anche la lista a discesa.. Grazie mille !
    Se la questione è sul "focus", basta un FocusListener. Ricevendo il focus imposti il background X, perdendo il focus imposti il background null (=default).
    Questo non funziona
    jComboBox_reparto.setBackground(colore_selezionato);
    Ho provato a guardare i componenti e mi stampa questo
    com.sun.java.swing.plaf.windows.WindowsComboBoxUI$XPComboBoxButton[,132,1,17x18,alignmentX=0.0,alignmentY=0.5,border=,flags=29360416,maximumSize=java.awt.Dimension[width=2147483647,height=2147483647],minimumSize=java.awt.Dimension[width=5,height=5],preferredSize=java.awt.Dimension[width=17,height=21],defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true]
    javax.swing.CellRendererPane[,0,0,0x0,hidden]

    i componenti li ho guardati con questo codice
          for(int i=0;i<100;i++){
        System.out.println(jComboBox_reparto.getComponent(i));
    }
  • Re: Cambiare lo sfondo a jComboBox

    Adesso ho provato a fare così dopo InitComponents
        for(int i=0;i<2;i++){System.out.println(i);
        jComboBox_reparto.getComponent(i).setBackground(colore_selezionato);
    }
    Ma non funziona...
  • Re: Cambiare lo sfondo a jComboBox

    Il getComponent(i) non c'entra niente e non va usato con JComboBox. Questo è un metodo di java.awt.Container e serve per gestire gli N componenti in un contenitore.

    Tutti i componenti Swing tecnicamente derivano da Container ma JComboBox non ha senso usarlo in tal modo.

    Scusa ma le cose le scrivi così a caso o ci ragioni sopra?
  • Re: Cambiare lo sfondo a jComboBox

    Sinceramente le stavo provando tutte. Come ha funzionato getComponent con gli altri per fare lo sfondo, ho provato anche con questo... Quindi come si fa?
  • Re: Cambiare lo sfondo a jComboBox

    p0ll0_ ha scritto:


    Sinceramente le stavo provando tutte. Come ha funzionato getComponent con gli altri per fare lo sfondo, ho provato anche con questo... Quindi come si fa?
    jComboBox_reparto.setBackground( ..... );
  • Re: Cambiare lo sfondo a jComboBox

    Ho detto che quello l'ho già provato, ma non fa nulla...
  • Re: Cambiare lo sfondo a jComboBox

    p0ll0_ ha scritto:


    Ho detto che quello l'ho già provato, ma non fa nulla...
    Ho capito il perché rileggendo l'output riportato prima:

    p0ll0_ ha scritto:


    Ho provato a guardare i componenti e mi stampa questo
    com.sun.java.swing.plaf.windows.WindowsComboBoxUI$XPComboBoxButton[,132,1,17x18,alignmentX=0.0,alignmentY=0.5,border=,flags=29360416,maximumSize=java.awt.Dimension [....]
    Stai usando il "native" Look&Feel su Windows e questo purtroppo è meno personalizzabile rispetto ad esempio al predefinito "Metal". È così, sfortunatamente (e non ho mai capito perché l'hanno reso così ...).

    Se cambiare L&F non è una opzione, bisognerebbe indagare più a fondo. Già solo questo a me richiederebbe di leggermi documentazione, guardare i sorgenti del framework ecc...
  • Re: Cambiare lo sfondo a jComboBox

    Ok, adesso provo a cambiare lookAndFeel. Grazie mille !
    ---
    ok ho provato e funziona. Grazie mille ! Gentilissimo come sempre !
Devi accedere o registrarti per scrivere nel forum
11 risposte