ae galera como eu crio um JComboBox que ao inves de caracteres eu tenho cores a escolher?
não axei nada parecido ainda alguem poderia me ajudar
ae galera como eu crio um JComboBox que ao inves de caracteres eu tenho cores a escolher?
não axei nada parecido ainda alguem poderia me ajudar
eh isso que vc estah procurando ?
eh isso mesmo que eu preciso mas to tendo um problema…o combo eu consigo fazer mostrar as cores mas não consigo fazer a celula da tabela mostrar a cor segue o codigo abaixo
public void GeraComboBox(JTable table,
TableColumn tolerancia) {
//Set up the editor for the sport cells.
JComboBox tipoBox = new JComboBox();
int[] values = new int[]{0, 128, 192, 255};
for (int r = 0; r < values.length; r++) {
for (int g = 0; g < values.length; g++) {
for (int b = 0; b < values.length; b++) {
Color c = new Color(values[r], values[g], values[b]);
tipoBox.addItem(c);
}
tipoBox.setRenderer(new ColorComboRenderer());
}
}
tolerancia.setCellEditor(new DefaultCellEditor(tipoBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Escolha o tipo de horário");
tolerancia.setCellRenderer(renderer);
}
oq estou fazendo errado??
essa eu acho interessante vc para e refletir …
muito mastigado vc pode ficar mal acostumado !
Oi,
da uma olhada e vê se pode te ajudar.. é um código para colorir o fundo da celula baseado em seus valores.
import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
public class Estudos extends JFrame{
public Estudos(){
super("Exemplo de uma tabela simples");
// colunas da tabela
String[] colunas = {"Nome", "Idade", "Sexo"};
// conteúdo da tabela
Object[][] conteudo = {
{"Osmar J. Silva", "32", "Masculino"},
{"Maria Clara Gomes", "19", "Feminino"},
{"Fernando Gomes", "15", "Masculino"},
{"Carlos Vieira", "40", "Masculino"}
};
// constrói a tabela
JTable tabela = new JTable(conteudo, colunas);
// quero colorir o fundo das células da segunda coluna
// se o valor encontrado for menor que 20
TableCellRenderer tcr = new Colorir();
TableColumn column =
tabela.getColumnModel().getColumn(1);
column.setCellRenderer(tcr);
tabela.setPreferredScrollableViewportSize(new
Dimension(350, 50));
Container c = getContentPane();
c.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);
setSize(400, 300);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Colorir extends JLabel implements
TableCellRenderer{
public Colorir(){
setOpaque(true);
}
public Component getTableCellRendererComponent(
JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column){
if(Integer.parseInt(value.toString()) < 20){
setBackground(Color.YELLOW);
}
else{
setBackground(table.getBackground());
}
setText(value.toString());
return this;
}
public void validate() {}
public void revalidate() {}
protected void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {}
public void firePropertyChange(String propertyName,
boolean oldValue, boolean newValue) {}
}
Tchauzin!
ué … eh bem parecido com o de um site q eu referenciei ontem !
:lol:
Tipo eu consigo pintar a celula da tabela...fazer um colorChoose e escolher a cor q eu quiser pra pintar a celula da tabela, e tambem consegui fazer um ComboBox de cores
mas oq eu nao estou conseguindo é fazer os dois trabalharem juntos...por exemplo acrescentei o JComboBox na minha tabela
// ADICIONA UM COMBOBOX NA COLUNA ESCOLHIDA
public void GeraComboBox(JTable table,
TableColumn tolerancia) {
//Set up the editor for the sport cells.
JComboBox tipoBox = new JComboBox();
int[] values = new int[]{0, 128, 192, 255};
for (int r = 0; r < values.length; r++) {
for (int g = 0; g < values.length; g++) {
for (int b = 0; b < values.length; b++) {
Color c = new Color(values[r], values[g], values[b]);
tipoBox.addItem(c);
}
tipoBox.setRenderer(new ColorComboRenderer());
}
}
tolerancia.setCellEditor(new DefaultCellEditor(tipoBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Escolha o tipo de horário");
tolerancia.setCellRenderer(renderer);
}
seto a coluna q eu quero q receba esse renderer
GeraComboBox(horario, horario.getColumnModel().getColumn(2));
até ae tudo bem o problema é q oq eu seleciono nesse combobox ele não mostra a cor na celula da tabela e sim o codigo em RGB, ja tentei setar a coluna da tabela do tipo new Color e nada...oq eu faço?
Obs: Estou usando NetBeans
Tem como postar o código completo para podermos rodar? (ou um SCCEE)
acho q o erro está em adicionar a cor ao combobox, tente usar o método setBackgroundColor
com esse metodo eu ja tentei tb…meus codigos estao feitos no netbeans…
Aqui esta o Codigo do meu form q mostra a tabela
package MinhaTabela;
import components.TableRenderDemo;
import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class MinhaTabela extends javax.swing.JFrame {
int index;
//Colorir colorir = new Colorir();
/** Creates new form MinhaTabela */
public MinhaTabela() {
initComponents();
GeraComboBox(horario, horario.getColumnModel().getColumn(2));
GeraComboBox(horario, horario.getColumnModel().getColumn(4));
GeraComboBox(horario, horario.getColumnModel().getColumn(6));
GeraComboBox(horario, horario.getColumnModel().getColumn(8));
//Set up renderer and editor for the Favorite Color column.
}
public int getIndex() {
return index;
}
// ADICIONA UM COMBOBOX NA COLUNA ESCOLHIDA
public void GeraComboBox(JTable table, TableColumn tolerancia) {
//Set up the editor for the sport cells.
JComboBox tipoBox = new JComboBox();
tipoBox.addItem(Color.RED);
tipoBox.addItem(Color.GREEN);
tipoBox.setRenderer(new ColorComboRenderer());
tolerancia.setCellEditor(new DefaultCellEditor(tipoBox));
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Escolha o tipo de horário");
tolerancia.setCellRenderer(renderer);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
horario = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
horario.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null, null, null, null},
{"Segunda", null, null, null, null, null, null, null, null},
{"Terça", null, null, null, null, null, null, null, null},
{"Quarta", null, null, null, null, null, null, null, null},
{"Quinta", null, null, null, null, null, null, null, null},
{"Sexta", null, null, null, null, null, null, null, null},
{"Sábado", null, null, null, null, null, null, null, null},
{"Domingo", null, null, null, null, null, null, null, null}
},
new String [] {
"", "Entrada 1", "T", "Saida 1", "T", "Entrada 2", "T", "Saida 2", "T"
}
) {
boolean[] canEdit = new boolean [] {
false, true, true, true, true, true, true, true, true
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
horario.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
horario.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
horarioKeyPressed(evt);
}
});
jScrollPane1.setViewportView(horario);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(30, 40, 570, 402);
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
jButton1.setBounds(490, 460, 73, 23);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-644)/2, (screenSize.height-552)/2, 644, 552);
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
}
private void horarioKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MinhaTabela().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable horario;
private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration
}
Aqui a classe ColorComboRenderer
package MinhaTabela;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.border.CompoundBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.MatteBorder;
public class ColorComboRenderer extends JPanel implements ListCellRenderer {
protected Color m_c = Color.black;
public ColorComboRenderer() {
super();
setBorder(new CompoundBorder(
new MatteBorder(2, 10, 2, 10, Color.white), new LineBorder(
Color.black)));
}
public Component getListCellRendererComponent(JList list, Object obj,
int row, boolean sel, boolean hasFocus) {
if (obj instanceof Color)
m_c = (Color) obj;
return this;
}
public void paint(Graphics g) {
setBackground(m_c);
super.paint(g);
}
public static void main(String[] a) {
JComboBox cbColor = new JComboBox();
int[] values = new int[] { 0, 128, 192, 255 };
for (int r = 0; r < values.length; r++)
for (int g = 0; g < values.length; g++)
for (int b = 0; b < values.length; b++) {
Color c = new Color(values[r], values[g], values[b]);
cbColor.addItem(c);
}
cbColor.setRenderer(new ColorComboRenderer());
JFrame f = new JFrame();
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.getContentPane().add(cbColor);
f.pack();
f.setSize(new Dimension(300, 80));
f.show();
}
}
ué … eh bem parecido com o de um site q eu referenciei ontem !
:lol:
Vai ver é o mesmo =)
O código não é meu, achei o site interessante!
Tchauzin!
Primeiro, implemente esse renderer:
public class AuxiliarTableRenderer extends JButton implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Color color = (Color) value;
if (color != null) {
setBackground(color);
return this;
}
return null;
}
}
depois substitua:
//Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Escolha o tipo de horário");
tolerancia.setCellRenderer(renderer);
por:
tolerancia.setCellRenderer(new AuxiliarTableRenderer());
e vê se funciona…
abraço!
Isso ae que o Fernando falou…
Só tire o @override

Deu certo!!! :lol:
agora preciso entender como funciona o CellEditor
Obrigado.