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;
} |