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 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.
[code]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) {}
}[/code]
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
[code] // 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©;
}
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);
}[/code]
seto a coluna q eu quero q receba esse renderer
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
[code]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
}[/code]
Aqui a classe ColorComboRenderer
[code]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©;
}
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();
}
}[/code]
[quote=Shelson]ué … eh bem parecido com o de um site q eu referenciei ontem !
:lol: [/quote]
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!
Deu certo!!! :lol:
agora preciso entender como funciona o CellEditor
Obrigado.