Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Bordes en celdas JTable

Estas en el tema de Bordes en celdas JTable en el foro de Java en Foros del Web. Hola compañer@s, Estoy realizando un calendario para una aplicación. Tengo un JTable donde muestro lo que seria el calendario anual como si fuera una hoja ...
  #1 (permalink)  
Antiguo 25/09/2015, 01:24
Avatar de Hatakke  
Fecha de Ingreso: octubre-2011
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 1
Bordes en celdas JTable

Hola compañer@s,

Estoy realizando un calendario para una aplicación. Tengo un JTable donde muestro lo que seria el calendario anual como si fuera una hoja de cálculo. Luego el usuario en un JDateChooser va eligiendo los días que desea y se van marcando en él.

Código PHP:

public class cCalendari {

    
cTaulaRenderResaltarDies trcp = new cTaulaRenderResaltarDies ();
    private 
DefaultTableModel mtblCalendar//Table model

    
String[] months =  {"Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre"};
    static final 
int mes 24;

    public 
int obtenir_numero_mes (int x){

        
int m;

        if(
x==0){
            
GregorianCalendar.JANUARY;
        }else if(
x==2){
            
GregorianCalendar.FEBRUARY;
        }else if(
x==4){
            
GregorianCalendar.MARCH;
        }else if(
x==6){
            
GregorianCalendar.APRIL;
        }else if(
x==8){
            
GregorianCalendar.MAY;
        }else if(
x==10){
            
GregorianCalendar.JUNE;
        }else if(
x==12){
            
GregorianCalendar.JULY;
        }else if(
x==14){
            
GregorianCalendar.AUGUST;
        }else if(
x==16){
            
GregorianCalendar.SEPTEMBER;
        }else if(
x==18){
            
GregorianCalendar.OCTOBER;
        }else if(
x==20){
            
GregorianCalendar.NOVEMBER;
        }else if(
x==22){
            
GregorianCalendar.DECEMBER;
        }else{
            
= -1;
        }

        return 
m;
    }
    public 
void netejar_calendari_JTable (JTable taula){
        
mtblCalendar = (DefaultTableModeltaula.getModel();

        for (
int x 0x<mes++){
            
mtblCalendar.setValueAt(months[x/2], x0);
            for (
int j=0j<taula.getColumnCount(); j++){
                
mtblCalendar.setValueAt(nullxj);
            }
        }
    }
    public 
void printar_calendari_JTable (JTable taulaint any){

        
mtblCalendar = (DefaultTableModeltaula.getModel();
        
int cont 0ds//Number Of Days, Start Of Month, Last day
        
int diaSetmana 0;
        
//Get first day of month and number of days
        
GregorianCalendar cal = new GregorianCalendar(any,cont,0);

    
//Draw calendar
        
for(int x 0x<mes++){
            
cont obtenir_numero_mes (x);
            if(
cont!=-1){//Printem el mes cada dues fileres
                
taula.setFont(new java.awt.Font("Tahoma"110));
                
taula.setGridColor(Color.BLACK);
                
mtblCalendar.setValueAt(months[x/2], x0);
                
cal.set(anycontGregorianCalendar.DAY_OF_MONTH);
                
//taula.setFont(new java.awt.Font("Tahoma", 0, 10)); 
                
                
ds cal.get(GregorianCalendar.DAY_OF_WEEK);
                
//ls = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
                
for(int z=1;z<=cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);z++){ // A cada mes printar els dies que té el mes

                    
if(z==1){ 
                        
diaSetmana + (ds+1);
                    }
                    
                    if(
diaSetmana>7){
                        
mtblCalendar.setValueAt(zx, (+ (ds+1))-7);
                    }else{
                        
mtblCalendar.setValueAt(zx+ (ds+1));
                    }
               }
           }
        }
    
//Marcar los fines de semana
       
taula.setDefaultRenderer(Object.class,new cTaulaRenderResaltarDies ()); 

    }
    public 
void printar_dia_seleccionado (JTable taula,int anyint mesint dia){

        
int filacolumnadia1;
        
GregorianCalendar cal = new GregorianCalendar(any,mes,0);

        
//Cogemos en que dia cae el preimer dia del mes
        
dia1 cal.get(GregorianCalendar.DAY_OF_WEEK);
        
//Segons el mes adaptem el valor per a que marqui la fila corresponent
        
if(mes==0){
            
fila = (mes)+ 1;
        }else{
            
fila = (mes*2) +1;
        }
        
//El valor de la columna dependrà del valor del primer dia del mes
        
columna = (dia dia1)-1;
       
        
mtblCalendar.setValueAt("T"filacolumna);
        
        
//Marcar los fines de semana
        //taula.setDefaultRenderer(Object.class,new cTaulaRenderResaltarDies (fila, columna)); 
    
}


He sobreescrito el metodo DefaultCellRenderer para ir marcando los dias que son fin de semana, las linias de cada mes donde se muestra el dia del mes y modificao el color de fondo y el valor de la celda de los dias seleccionados.

Código PHP:

@Override
    
public Component getTableCellRendererComponent (JTable tableObject valueboolean selectedboolean focusedint rowint column){
            
super.getTableCellRendererComponent(tablevalueselectedfocusedrowcolumn);
            
 
            if (
row==|| row==|| row== || row==|| row== || row== 10 || row== 12 || row== 14 || row== 16 || row== 18 || row== 20 || row== 22){
                
setBackground(linia);
                
            }else if (!((
column == || column == 7) || 
                    (
column == 13 || column == 14) ||
                    (
column == 20 || column == 21) ||
                    (
column == 27 || column == 28) ||
                    (
column == 34 || column == 35) ||
                    (
column == 41 || column == 42)) && (table.getValueAt(rowcolumn) == null)){
                
                
setBackground(blanc);
            }else if (!((
column == || column == 7) || 
                    (
column == 13 || column == 14) ||
                    (
column == 20 || column == 21) ||
                    (
column == 27 || column == 28) ||
                    (
column == 34 || column == 35) ||
                    (
column == 41 || column == 42)) && (table.getValueAt(rowcolumn) != null)){
                
                
setBackground(verd);    
            }else if (((
column == || column == 7) || 
                    (
column == 13 || column == 14) ||
                    (
column == 20 || column == 21) ||
                    (
column == 27 || column == 28) ||
                    (
column == 34 || column == 35) ||
                    (
column == 41 || column == 42)) && (table.getValueAt(rowcolumn) == null)){
                
                
setBackground(finde);
            }else if (((
column == || column == 7) || 
                    (
column == 13 || column == 14) ||
                    (
column == 20 || column == 21) ||
                    (
column == 27 || column == 28) ||
                    (
column == 34 || column == 35) ||
                    (
column == 41 || column == 42)) && (table.getValueAt(rowcolumn) != null)){
                
                
setBackground(verd);
            }

            if (
value != null){
//                if (Integer.parseInt(value.toString()) == realDay && currentMonth == realMonth && currentYear == realYear){ //Today
//                        setBackground(new Color(220, 220, 255));
//                }
            
}
            
            
setBorder(null);
            
this.setHorizontalAlignment(SwingConstants.CENTER);
            
setForeground(Color.black);
            return 
this;  
    } 
Lo que me gustaría es de los días del mes resaltarlos modificando los bordes de las celdas pero el setBorder () o setGridColor () solo me modifica las del borde del externo del JTable.

Como podria hacerlo?

Gracias!
  #2 (permalink)  
Antiguo 25/09/2015, 03:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Bordes en celdas JTable

Hola:

Ese setBorder() que dices entiendo que es el del JTable. En vez de ese, debes usar el setBorder() del componente que estás devolviendo en el render getTableCellRendererComponent().

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 25/09/2015, 05:08
Avatar de Hatakke  
Fecha de Ingreso: octubre-2011
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Bordes en celdas JTable

Si, era eso. Que dolor de cabeza por una tontería.
Muchas gracias

Etiquetas: bordes, celdas, jtable, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:23.