Java - Pintar celda

 
Vista:
sin imagen de perfil

Pintar celda

Publicado por Luis Eduardo (9 intervenciones) el 19/10/2015 19:45:34
Buenos días quisiera saber como le puedo para pintar el fondo de una celda si el valor es menor a 3 con java
pintar
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
Imágen de perfil de Josué

Pintar celda

Publicado por Josué (14 intervenciones) el 20/10/2015 00:06:40
Lo que necesitas es cambiar el Renderer de la tabla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private DefaultTableCellRenderer Renderer=new DefaultTableCellRenderer(){
    @Override public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
        super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
        if(column==10){
            double valor=(double)value;
            if(valor<3){
                setBackground(java.awt.Color.red);
            }
            else{
                setBackground(java.awt.Color.white);
            }
        return this;
    }
};
 
table.setDefaultRenderer(Object.class,Renderer);
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

Pintar celda

Publicado por Luis Eduardo (9 intervenciones) el 20/10/2015 01:48:10
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
public DefaultTableCellRenderer  formato_tablas = new DefaultTableCellRenderer(){
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
    		super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,col);
    		if (col==10){
    			double valor = (double)value;
    			if(valor<=3){
    				setBackground(Color.black);
    				setForeground(Color.white);
    			}else{
    				if (valor<=5){
    					setBackground(Color.red);
    					setForeground(Color.black);
    				}else{
    					if (valor<=10){
    						setBackground(Color.yellow);
    					}
    					else{
    						if (valor<=15){
    							setBackground(Color.white);
        					}
    						else{
    							if (valor<=15){
    								setBackground(Color.green);
            					}
    						}
    					}
    				}
    			}
    		}
    		return this;
    	}
    };
me pinta toda la fila yo colo quiero que me pinte la pura celda de la columna DOH ya me canse de buscar por todos lados y no encuentro porfavor ayudame
pintar
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
Imágen de perfil de Josué

Pintar celda

Publicado por Josué (14 intervenciones) el 20/10/2015 01:57:13
Segun yo lo unico que falta es poner un ELSE
para que te ponga fondo blanco y letras negras si la columna no es la 10
se me paso poner ese ELSE en el primer comentario, perdon

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
public DefaultTableCellRenderer  formato_tablas = new DefaultTableCellRenderer(){
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
    		super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,col);
    		if (col==10){
    			double valor = (double)value;
    			if(valor<=3){
    				setBackground(Color.black);
    				setForeground(Color.white);
    			}else{
    				if (valor<=5){
    					setBackground(Color.red);
    					setForeground(Color.black);
    				}else{
    					if (valor<=10){
    						setBackground(Color.yellow);
    					}
    					else{
    						if (valor<=15){
    							setBackground(Color.white);
        					}
    						else{
    							if (valor<=15){
    								setBackground(Color.green);
            					}
    						}
    					}
    				}
    			}
    		}
                else{
                    setBackground(Color.white);
    		    setForeground(Color.black);
                }
    		return this;
    	}
    };
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Pintar celda

Publicado por Luis Eduardo (9 intervenciones) el 20/10/2015 02:20:37
Ya funciono compadre gracias!!!! podrias aclararme unas dudas mas?
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
Imágen de perfil de Josué

Pintar celda

Publicado por Josué (14 intervenciones) el 20/10/2015 02:36:15
claro, para eso me registre en esta pagina
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

Pintar celda

Publicado por Luis Eduardo (9 intervenciones) el 21/10/2015 02:10:32
hola de nuevo veras que tengo otra duda. quiero editar una celda y al terminar de editarla esta acutualice en la base de datos deicha informacion actualizada


para empezar tengo una mouse listener
1
2
3
4
5
6
7
8
9
10
11
12
table.addMouseListener(new MouseAdapter() {
        	public void mousePressed(MouseEvent Mouse_evt) {
        		JTable table =(JTable) Mouse_evt.getSource();
        		String no_material = "";
        		Point point = Mouse_evt.getPoint();
        		int row = table.rowAtPoint(point);
        		if (Mouse_evt.getClickCount() == 1) {
        			no_material =  (String) table.getValueAt(table.getSelectedRow(),0);
        		}
        		material(no_material);//------------el valor obtenido a mi clase material 
        	}
        });
este mouse listener me sirve para agarrar el numero de material al que le quiero cambiar el comentario, despues tengo un key listener donde al precionar enter me hace la consulta en sql del update
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void material(String material  /*ring comentario*/){
    	table.addKeyListener(new KeyAdapter() {
    		public void keyReleased(KeyEvent e) {
 
    			int p = e.getKeyCode();
    			String mat = material;
    			String comentario =(String) table.getValueAt(table.getSelectedRow(),16);
    			if(p==KeyEvent.VK_ENTER){
    				e.consume();
 
    				//JOptionPane.showMessageDialog(null,mat+comentario);
    				try{
    					String strsql = "UPDATE table_6  set Comments = '"+ comentario+"' WHERE material = '"+mat+"'";
    					System.out.println(strsql);
    					PreparedStatement pstm = cn.getConnection().prepareStatement(strsql);
                        pstm.executeUpdate();
 
    				}
    				catch(SQLException e1){
                        System.out.println(e1);
                    }
    			}
    		}
    	});
pero al dar enter me hace dos updates y si edito otra fila me hace cuatro y así sucesivamente va aumentando de dos en dos


update
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
Imágen de perfil de Josué

Pintar celda

Publicado por Josué (14 intervenciones) el 21/10/2015 03:18:57
Se te repite el resultado porque cada vez que das click en la tabla agregas un nuevo Listener a la tabla
asi que mientras mas clicks mas UPDATES van a aparecer
Lo unico que necesitas hacer es crear una variable en la clase

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
String material;
 
table.addMouseListener(new MouseAdapter(){
	public void mousePressed(MouseEvent Mouse_evt){
		JTable table=(JTable)Mouse_evt.getSource();
		Point point=Mouse_evt.getPoint();
		int row=table.rowAtPoint(point);
		if (Mouse_evt.getClickCount() == 1) {
			material=(String)table.getValueAt(table.getSelectedRow(),0);
		}
	}
});
 
table.addKeyListener(new KeyAdapter(){
	public void keyReleased(KeyEvent e){
		int p=e.getKeyCode();
		String comentario=(String)table.getValueAt(table.getSelectedRow(),16);
		if(p==KeyEvent.VK_ENTER){
			e.consume();
			//JOptionPane.showMessageDialog(null,mat+comentario);
			try{
				String strsql="UPDATE table_6 set Comments='"+comentario+"' WHERE material='"+material+"'";
				System.out.println(strsql);
				PreparedStatement pstm=cn.getConnection().prepareStatement(strsql);
				pstm.executeUpdate();
			}
			catch(SQLException e1){
				System.out.println(e1);
			}
		}
	}
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Pintar celda

Publicado por Luis Eduardo (9 intervenciones) el 27/10/2015 19:16:17
Buenos dias te molesto de nuevo tengo otra duda!! no hago un nuevo blog por que nadie me pela y eres uno de los pocos que he recivido ayuda gracias por eso estoy muy agradecido con tu ayuda.... ahora tengo un nuevo problema. Ya me pinta la columna DOH con las especificaciones adecuadas la columna DOH en realidad es Days On Hand enseguida de la columna DOH esta la de de DT(Deat Time). lo que pasa con la columna DT es que suma los DOH a la fecha de hoy. lo que quiero en el momento que DOH cambie agregue los DOH a DT
fecha
Agradecimiento
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