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

Pintar celda y color de letra

Estas en el tema de Pintar celda y color de letra en el foro de Java en Foros del Web. Buena aqui tengo una jtable que en el menu al poner Nuevo te sale para poner el numero de filas y columnas una ves dado ...
  #1 (permalink)  
Antiguo 26/11/2013, 10:29
 
Fecha de Ingreso: febrero-2013
Mensajes: 78
Antigüedad: 11 años, 10 meses
Puntos: 0
Pintar celda y color de letra

Buena aqui tengo una jtable
que en el menu al poner Nuevo te sale para poner el numero de filas y columnas
una ves dado los numeros se creara la tabla ...

ok pero tienen que anchar un poco el frame para q aparesca la tabla
ok quiero cuando seleccionan color fuente y escoja el color de fondo
se abrira un panel de colores , entonces yo selecciono uno y quiero q me pinte la celda segun cual haya dado click ..


lo mismo para color de letra , segun el color q yo haya escogido al momento de escribir en una celda se escribira segun el color q haya elegido ..

ok esto si me salio

nada mas que no lo hacen en la tabla



aqui les dejo el codigo completo



[HIGHLIGHT="Java"]/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package proyectoxd;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.text.Style;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
/**
*
* @author Administrador
*/
public class ProyectoTabla_2013II {


public static void main(String[] args) {
JFrame frame = new Tabla();
frame.setSize(500, 500);
frame.setVisible(true);

}
}
class MiModelo extends DefaultTableModel {

@Override
public Object getValueAt(int row, int column) {
return super.getValueAt(row, column); //To change body of generated methods, choose Tools | Templates.
}

public MiModelo(Object[][] data, Object[] columnNames) {
super(data, columnNames);
}

public boolean isCellEditable(int row, int column) {
// Aquí devolvemos true o false según queramos que una celda
if (column == 0) {
return false;
}

return true;
}
}

class Tabla extends JFrame {

JPanel jpanel = new JPanel();


Label resultado=new Label("Ninguna voz de menú clicada");
JPanel panel = new JPanel();

JMenu archivo = new JMenu("Archivo");

JMenu ColordeFuente = new JMenu("Color de Fuente");
JMenuItem ColordeFondo = new JMenuItem("Color de Fondo");

JMenu ColordeLetra = new JMenu("Color de Letra");
JMenuItem mi = new JMenuItem( "Rojo" );
JMenuItem mi2 = new JMenuItem( "Verde" );
JMenuItem mi3 = new JMenuItem( "Azul" );

JMenu ayuda = new JMenu("Ayuda");





private Style estiloRojo, estiloVerde, estiloAzul;
private JTextPane texto;


JMenuBar menu = new JMenuBar();
JMenuBar edicion = new JMenuBar();

JMenuItem nuevo = new JMenuItem("Nuevo");
JMenuItem abrir = new JMenuItem("Abrir");
JMenuItem guardar = new JMenuItem("Guardar");
JMenuItem salir = new JMenuItem("Salir");

String[] val = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "Ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
//27
ArrayList combinado = new ArrayList();
ArrayList combinado2 = new ArrayList();


public void crea(final int f,final int c){
final MiModelo dtm = new MiModelo(creartablaModoXxY(f,c), crearColumnaN(c));
final JTable tabla1 = new JTable(dtm);

tabla1.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int fila = tabla1.rowAtPoint(e.getPoint());
int columna = tabla1.columnAtPoint(e.getPoint());
if ((fila > -1) && (columna > -1))

System.out.println(dtm.getValueAt(fila, columna));
}
});

for(int i=0;i<f;i++){
for(int j=0;j<c;j++){

dtm.isCellEditable(i, j);}

}

TableColumn columna = tabla1.getColumn(" ");
columna.setMaxWidth(40);

tabla1.setPreferredScrollableViewportSize(new Dimension(500,700));
JScrollPane scrollPane = new JScrollPane(tabla1);
getContentPane().add(scrollPane, BorderLayout.CENTER);
tabla1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabla1.doLayout();
}





public void combinar2(int t, int p, int posa, int posb, int posc) {

// JOptionPane.showMessageDialog(null, t);
if (p == t) {

return;
}
if (posc == 27) {


if (posb < 27) {
posb = posb + 1;

posc = 0;
}
if (posb == 27) {
posa = posa + 1;
posb = 0;
posc = 0;
}
}
combinado2.add(val[posa] + val[posb] + val[posc]);
combinar2(t, p + 1, posa, posb, posc + 1);
}



public void combinar(int t, int z, int posa, int posb) {
// JOptionPane.showMessageDialog(null,"lml" +z+"," +combinado.size());
if (z == t) {
// JOptionPane.showMessageDialog(null,"lml" +z+"," +combinado.size());
return;
}
// JOptionPane.showMessageDialog(null,posa+","+posb);
if (posb == 27) {

posa = posa + 1;
posb = 0;

}
combinado.add(val[posa] + val[posb]);
combinar(t, z + 1, posa, posb + 1);

}
//aim

public String[] crearColumnaN(int t) {

String vec[] = new String[t + 1];
int e = 0;
int x = 0;
if (t > 756) {

combinar2(t - 756, 0, 0, 0, 0); //702 veces

// JOptionPane.showMessageDialog(null,combinado2);
}
if (t > 27) {

if (t < 756) {

combinar(t - 27, 0, 0, 0);

} else {

combinar(729, 0, 0, 0);//729

}
}


for (int i = 0; i < t + 1; i++) {
if (i == 0) {

vec[i] = " ";
} else {
if (i <= val.length) {

vec[i] = val[i - 1];
} else if (i > 756) {

vec[i] = combinado2.get(x).toString();
x++;

} else {

vec[i] = combinado.get(e).toString();

// JOptionPane.showMessageDialog(null,i+","+e);
e++;
}
}

}

return vec;
}

public int[] crearFilaN(int f) {
int val = 1;
int vec[] = new int[f];
for (int i = 0; i < f; i++) {
vec[i] = val;
val++;
}
return vec;
}

public Object[][] creartablaModoXxY(int f, int c) {
int vf[] = crearFilaN(f);
Object[][] cuerpo = new Object[f][c + 1];
int z = 0;
for (int i = 0; i < f; i++) {
for (int j = 0; j < c + 1; j++) {
if (j == 0) {
cuerpo[i][j] = vf[z];
z++;
} else {
cuerpo[i][j] = "";
}
}
}
return cuerpo;
}
  #2 (permalink)  
Antiguo 26/11/2013, 10:30
 
Fecha de Ingreso: febrero-2013
Mensajes: 78
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Pintar celda y color de letra

bueno tuve que separar el codigo por que no me deja escribir mas de 10000 caracteres
aqui continua el codigo

Código Java:
Ver original
  1. public Tabla()
  2.         {
  3.         super("Hoja de Calculo");
  4.         menu.add(archivo);
  5.         menu.add(ColordeFuente);
  6.         menu.add(ayuda);
  7.        
  8.         archivo.add(nuevo);
  9.         archivo.add(abrir);
  10.         archivo.add(guardar);
  11.         //archivo.addSeparator();
  12.         archivo.add(salir);
  13.        
  14.        
  15.         ColordeFuente.add(ColordeFondo);
  16.         ColordeFuente.add(ColordeLetra);
  17.         ColordeLetra.add(mi);
  18.        
  19.         ColordeLetra.add(mi2);
  20.         ColordeLetra.add(mi3);
  21.        
  22.         menu.setVisible(true);
  23.         //getContentPane().add(jpanel);
  24.        
  25.        
  26.          //creaEditor();
  27.          //add( texto, BorderLayout.CENTER );
  28.        
  29.         this.add(menu, BorderLayout.NORTH);
  30.        
  31.  
  32.  
  33.         //PARA CONSEGUIR UNA POSICION DE UN CELDA QUE LE DAS CLIC
  34.  
  35.  
  36.      
  37.         mi.addActionListener(new ActionListener() {
  38.         @Override
  39.         public void actionPerformed(ActionEvent evt) {
  40.         Style estilo = null;
  41.         String color = (String)evt.getActionCommand();
  42.  
  43.         if ( color.equals( "Rojo" ) ) {
  44.             estilo = estiloRojo;
  45.         }
  46.         else if ( color.equals( "Azul" ) ) {
  47.             estilo = estiloAzul;
  48.         }
  49.         else if ( color.equals( "Verde" ) ) {
  50.             estilo = estiloVerde;
  51.         }
  52.         texto.setCharacterAttributes( estilo, false );
  53.                
  54.         }
  55.         }
  56.         );
  57.        
  58.        
  59.        
  60.          mi2.addActionListener(new ActionListener() {
  61.         @Override
  62.         public void actionPerformed(ActionEvent evt) {
  63.         Style estilo = null;
  64.         String color = (String)evt.getActionCommand();
  65.  
  66.         if ( color.equals( "Rojo" ) ) {
  67.             estilo = estiloRojo;
  68.         }
  69.         else if ( color.equals( "Azul" ) ) {
  70.             estilo = estiloAzul;
  71.         }
  72.         else if ( color.equals( "Verde" ) ) {
  73.             estilo = estiloVerde;
  74.         }
  75.         texto.setCharacterAttributes( estilo, false );
  76.                
  77.         }
  78.         }
  79.         );
  80.          
  81.          
  82.          
  83.          
  84.          
  85.           mi3.addActionListener(new ActionListener() {
  86.         @Override
  87.         public void actionPerformed(ActionEvent evt) {
  88.         Style estilo = null;
  89.         String color = (String)evt.getActionCommand();
  90.  
  91.         if ( color.equals( "Rojo" ) ) {
  92.             estilo = estiloRojo;
  93.         }
  94.         else if ( color.equals( "Azul" ) ) {
  95.             estilo = estiloAzul;
  96.         }
  97.         else if ( color.equals( "Verde" ) ) {
  98.             estilo = estiloVerde;
  99.         }
  100.         texto.setCharacterAttributes( estilo, false );
  101.                
  102.         }
  103.         }
  104.         );
  105.          
  106.          
  107.          
  108.          ColordeFondo.addActionListener(new ActionListener() {
  109.         @Override
  110.         public void actionPerformed(ActionEvent e) {
  111.         Color color = JColorChooser.showDialog(Tabla.this,"Seleccione un nuevo color...", Color.white);
  112.         jpanel.setBackground(color);      
  113.         }
  114.         });
  115.  
  116.    
  117.           //creaEditor();
  118.        //add( texto, BorderLayout.CENTER );
  119.        
  120.        
  121.        
  122.         //LISTENER PARA EL BOTON NUEVO
  123.         nuevo.addActionListener(new ActionListener() {
  124.         @Override
  125.         public void actionPerformed(ActionEvent e) {
  126.         int f;
  127.         int c;
  128.         f = Integer.parseInt(JOptionPane.showInputDialog("Ingrese filas"));
  129.         c = Integer.parseInt(JOptionPane.showInputDialog("Ingrese columnas"));
  130.          crea(f,c);
  131.                
  132.         }
  133.         });
  134.  
  135.     }
  136.        
  137.        
  138.        
  139.        
  140.        
  141.        
  142.      
  143.          
  144.          
  145.          
  146.          
  147.          private void creaEditor() {
  148.         StyleContext sc = creaEstilos();
  149.         DefaultStyledDocument doc = new DefaultStyledDocument( sc );
  150.  
  151.         texto = new JTextPane( doc );
  152.     }
  153.  
  154.  
  155.     private StyleContext creaEstilos() {
  156.         StyleContext sc = new StyleContext();
  157.  
  158.         estiloRojo = sc.addStyle( null, null );
  159.         StyleConstants.setForeground( estiloRojo, Color.red );
  160.         StyleConstants.setFontSize( estiloRojo,24 );
  161.         estiloVerde = sc.addStyle( null, null );
  162.         StyleConstants.setForeground( estiloVerde, Color.green );
  163.         StyleConstants.setFontSize( estiloVerde,24 );
  164.  
  165.         estiloAzul = sc.addStyle( null, null );
  166.         StyleConstants.setForeground( estiloAzul, Color.blue );
  167.         StyleConstants.setFontSize( estiloAzul,24 );
  168.         return( sc );
  169.     }
  170.          
  171.          
  172.          
  173.          
  174.          
  175.          
  176. }

en la parte que aparecen estas lineas

//getContentPane().add(jpanel);


//creaEditor();
//add( texto, BorderLayout.CENTER );

estan como comentario como habran visto , estan con dos slash
entonces si quieren pintar para color de fondo
a //getContentPane().add(jpanel);
quitenle los slash
y ejecutan el programa entonces eligen un color de fondo dan click y veran q se pinta el panel , yo quiero que se pinte segun la celda que haya seleccionado

si quieren para escribir con colores al codigo

//creaEditor();
//add( texto, BorderLayout.CENTER );


quitenle los slash ...
veran que cuando escojan un color escribiran segun el color q haya elegido ..

okey yo quiero aplicarlo esto pero ala tabla ...

para q aparesca la tabla tienen que volver a poner los slash a los codigos , si no la tabla no aparecera


espero alguien me oriente como hacer esto ...

Etiquetas: celda, color, letra, pintar, string
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 07:07.