Java - cambiar color de JMenuItem en JAVA

 
Vista:
sin imagen de perfil

cambiar color de JMenuItem en JAVA

Publicado por richard (2 intervenciones) el 27/09/2016 17:58:47
ayuda

cambiar color


1
2
3
4
5
6
]Como se muestra en la imagen tengo un menú en segundo plano de java con jpopupMenu, y tengo unos JmenuItem, los cuales deseo cambiar el color con que aparece en pantalla.
Hasta el momento he intentado cambiar  desde cada menuItem  el color con .setBackground(color.green),
pero no me funciona, ese mismo .setBackground(color.green) he intentado aplicarlo a cada instancia , para ver e donde me puede funcionar pero no muestra el cambio en el menu.
Alguien tiene idea como hacerlo.
Agradesco cualquier aporte
Aclaro no utilizo popupMenu sino JpopupMenu
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

cambiar color de JMenuItem en JAVA

Publicado por YYanes (144 intervenciones) el 27/09/2016 19:04:07
Hola amigo:

lo que usted pretende tiene sus complicaciones, tendrá que crear una clase que herede del Renderer de dicho menu. El asunto es que si usted intenta utilizar el método setBackgroundColor(color) lo que hará será cambiar el color de todo el menú, y no de un ítem en específico. Yo nunca he hecho esto para un jPopupMenu, pero sí lo he hecho para JTables, así que supongo no debe ser muy diferente, así que bueno, le voy a poner aquí cómo hacerlo para una tabla, y usted intente adaptarlo al aso del popupMenu, ¿ok? Allá vamos:

Para personalizar los colores de un jTable:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//--- Primeramente hay que crear una clase que herede de DefaultTableCellRenderer
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
 
public class FormatoTablaB extends DefaultTableCellRenderer{
 
    private int columna_patron ;
    public FormatoTablaB(int Colpatron)
    {
        this.columna_patron = Colpatron;
    }
 
    @Override
    public Component getTableCellRendererComponent ( JTable table, Object value, boolean selected, boolean focused, int row, int column )
    {
        setBackground(Color.white);//color de fondo
        setForeground(Color.black);//color de texto
 
       Color col = new Color(255,0,0); // color personalizado
 
        //--- si indicador es de un color específico
          col = Color.decode(colorStr);
          setForeground(col); // esto sería para toda la tabla
 
          if(column==columna_patron) // establecer el color personalizado solo para la columna especificada
             setBackground(col);
 
        super.getTableCellRendererComponent(table, value, selected, focused, row, column);
        return this;
    }
}
 
//--------------------------------------------------------
//--- ahora en la ventana que contiene la tabla, a la hora de llenar los datos de la tabla, bastaría con poner:
 
            FormatoTablaB formatTable = new FormatoTablaB(1); // le paso por parámetros la posición de la columna que tendrá el color personalizado
            Tabla_Captacion.setDefaultRenderer(Object.class, formatTable);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cambiar color de JMenuItem en JAVA

Publicado por YYanes (144 intervenciones) el 27/09/2016 19:06:45
Por favor, olvide el siguiente fragmento del código anterior, se me escapó y no tiene importancia:

/*
//--- si indicador es de un color específico
col = Color.decode(colorStr);
setForeground(col); // esto sería para toda la tabla
*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cambiar color de JMenuItem en JAVA

Publicado por richard (2 intervenciones) el 27/09/2016 21:09:27
de antemano gracias; mirare que puedo utilizar y aclaro no necesito cambiar uno por uno los itemMenu pero si , cambiar el color en general de todo el menú. no importa si todos queda amarilos , verdes, pero que sea diferente del que viene por defecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar