Pessoal, qual é a maneira de se colorir linha sim, linha não em uma JTable?
Obrigada
Oi,
Seria um efeito zebrinha?
Tchauzin!
Não sei o quer dizer com efeito zebrinha. Quero colorir uma linha e a outra deixa-la branco.
Oi,
Se eu não me engano, bocê deverá sobrescrever o método prepareRenderer
Tchauzin!
Outra forma, que não envolve fazer absolutamente nada, é você usar o Look & Feel “Nimbus”. Veja como é que fica sem eu mexer absolutamente nada (exceto setar o look & feel):
Oi,
Assim funciona.:
JTable tabela = new JTable(conteudo, colunas){
public Component prepareRenderer(TableCellRenderer renderer,
int rowIndex, int vColIndex) {
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
if (vColIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex)) {
c.setBackground(Color.yellow);
} else {
c.setBackground(getBackground());
}
return c;
}
};
Tchauzin!
[quote=entanglement]Outra forma, que não envolve fazer absolutamente nada, é você usar o Look & Feel “Nimbus”. Veja como é que fica sem eu mexer absolutamente nada (exceto setar o look & feel):
[/quote]
Oi,
Não teria que adicionar um .jar nas bibliotecas do projeto?
Tchauzin!
Desculpe a minha ignorancia, mas como eu uso Look & Feel em uma JTable?
Olá oitathi
Tente isso para o sistema:
FramePrincipal.setDefaultLookAndFeelDecorated(true);
LookAndFeelInfo[] lafs = (LookAndFeelInfo[]) UIManager.getInstalledLookAndFeels();
para o jTable
http://www.guj.com.br/posts/list/30793.java
http://forums.java.net/jive/thread.jspa?messageID=338905&tstart=0
Boa sorte
Silvio
[quote=lina][quote=entanglement]Outra forma, que não envolve fazer absolutamente nada, é você usar o Look & Feel “Nimbus”. Veja como é que fica sem eu mexer absolutamente nada (exceto setar o look & feel):
[/quote]
Oi,
Não teria que adicionar um .jar nas bibliotecas do projeto?
Tchauzin![/quote]
A partir do Java 6.0 update 10 ( a versão atual é 21) não precisa adicionar nenhum JAR.
Oi,
Utilizo aqui o 6_10 ainda… estão é por isso! rs
Obrigada!
Tchauzin!
Eu tô tentando fazer assim, mas não tô conseguindo:
private DefaultTableCellRenderer ioRender = new DefaultTableCellHeaderRenderer();
private JTable table;
public minhaClasse(){
table=new JTable(9,3);
table.setSize(600,200);
table.setLocation(42,80);
table.setFont(new Font("arial",Font.PLAIN,15));
table.setRowHeight(25);
add(table);
completaTabela();
}
public void completaTabela(parametros){
for(i=0; i<table.getRowCount();i++)
if(i%2==0){
ioRender.setBackground(Color.RED);
table.getColumnModel().getColumn(0).setCellRenderer(ioRender);
table.repaint();
}
}
Tah muito errado?
Oi,
O meu primeiro exemplo não deu certo?
[code]private DefaultTableCellRenderer ioRender = new DefaultTableCellHeaderRenderer();
private JTable table;
public minhaClasse(){
table=new JTable(9,3){
public Component prepareRenderer(TableCellRenderer renderer,
int rowIndex, int vColIndex) {
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
if (vColIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex)) {
c.setBackground(Color.yellow);
} else {
c.setBackground(getBackground());
}
return c;
}
};
table.setSize(600,200);
table.setLocation(42,80);
table.setFont(new Font(“arial”,Font.PLAIN,15));
table.setRowHeight(25);
add(table);
completaTabela();
}[/code]
Tchauzin!
eh que eu num quero fazer um metodo só pra aquilo…
não dah pra fazer daquele jeito?:
Na verdade você não tem um método para isso, você pode estender essa classe e passar ela posteriormente para todos as JTable que desejar sem precisar mexer mais no código ou escrever outros.
Faz assim:
[code]public class MeuRenderer implements TableCellRenderer {
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
((JLabel) renderer).setOpaque(true);
Color foreground, background;
if (row % 2 == 0) {
foreground = Color.blue;
background = Color.white;
} else {
foreground = Color.white;
background = Color.blue;
}
renderer.setForeground(foreground);
renderer.setBackground(background);
return renderer;
}
}[/code]
e nas suas classes que você tem um JTable que deseja pintar de “zebrinha” chame esse código:
TableCellRenderer renderer = new MeuRenderer();
table.setDefaultRenderer(Object.class, renderer);
Até mais.
[quote=jgavazzisp]Na verdade você não tem um método para isso, você pode estender essa classe e passar ela posteriormente para todos as JTable que desejar sem precisar mexer mais no código ou escrever outros.
Faz assim:
[code]public class MeuRenderer implements TableCellRenderer {
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
((JLabel) renderer).setOpaque(true);
Color foreground, background;
if (row % 2 == 0) {
foreground = Color.blue;
background = Color.white;
} else {
foreground = Color.white;
background = Color.blue;
}
renderer.setForeground(foreground);
renderer.setBackground(background);
return renderer;
}
}[/code]
e nas suas classes que você tem um JTable que deseja pintar de “zebrinha” chame esse código:
TableCellRenderer renderer = new MeuRenderer();
table.setDefaultRenderer(Object.class, renderer);
Até mais.
[/quote]
Implementei está código mas só esta a fazer para as duas primeira colunas!
Será que tem a ver com jTableDetails.setDefaultRenderer(Object.class, renderer);
Obrigado!