Boa tarde pessoal,
Tenho uma JTable que apresenta os dados de uma tabela do BD, está ocorrendo que os dados nas estão sendo apresentado visualmente, é como se a fonte do texto da JTable estivesse setada para Write, alguém já passou por isso e pode me ajudar?
Obrigado
[ ]'s
Vc pode postar o trechode código?
Vamos lá
Modelo:
public class TableModelProduto extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private ArrayList<Produto> listProduto;
public TableModelProduto(ArrayList<Produto> listProduto) {
this.listProduto = listProduto;
} // fim do construtor
public int getColumnCount() {
return 2;
}
public int getRowCount() {
return listProduto.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
Produto produto = listProduto.get(rowIndex);
switch(columnIndex) {
case 0: produto.getCodigo();
case 1: produto.getDescricao();
}
return null;
} // fim do método getValueAt
public Produto getValues(int index) {
return listProduto.get(index);
}
}
Modelo das colunas:
[code]public class ColumnModelProduto extends DefaultTableColumnModel {
private static final long serialVersionUID = 1L;
public ColumnModelProduto(FontMetrics fm) {
int letra = fm.stringWidth("M");
addColumn(criaColumn(0,10 * letra, fm, true,"Código"));
addColumn(criaColumn(0,100 * letra, fm, true,"Produto"));
}
private TableColumn criaColumn(int columnIndex, int largura, FontMetrics fm, boolean resizable, String title) {
int larguraTitulo = fm.stringWidth(title + " ");
if ( largura < larguraTitulo) {
largura = larguraTitulo;
}
TableColumn column = new TableColumn(columnIndex);
column.setCellRenderer( new CellRendererDefault());
column.setHeaderRenderer(null);
column.setHeaderValue(title);
column.setPreferredWidth(largura);
if(!resizable) {
column.setMaxWidth(largura);
column.setMinWidth(largura);
}
column.setResizable(resizable);
return column;
}[/code]
Cria efeito zebrado:
public class CellRendererDefault extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
public CellRendererDefault() {
super();
}
public Component getTableCellRendererComponent(javax.swing.JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column){
JLabel label = (JLabel)super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
if((row % 2) == 0){
label.setBackground(Color.WHITE);
}
else{
label.setBackground(new Color(225, 251, 234));
}
return label;
}
[/code]
E aqui apresento ela:
[code]private void initTable() {
tableProduto.setAutoCreateColumnsFromModel(false);
tableProduto.setModel( new TableModelProduto(controllerProduto.getProduto()));
FontMetrics fm = tableProduto.getFontMetrics(tableProduto.getFont());
tableProduto.setColumnModel( new ColumnModelProduto(fm));
tableProduto.setSelectionModel( new DefaultListSelectionModel() {
private static final long serialVersionUID = 1L;
public String toString() {
return "tableProduto";
}
});
tableProduto.getSelectionModel().addListSelectionListener( new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel)e.getSource();
if (e.getValueIsAdjusting())
return;
if (!(lsm.isSelectionEmpty())) {
if(e.getSource().toString().equals("tableProduto")){
int l = tableProduto.getSelectedRow();
produto = ((TableModelProduto)tableProduto.getModel()).getValues(l);
setRegistros(produto);
}
}
}
});
tableProduto.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
if(controllerProduto.getProduto().size() > 0){
produto = controllerProduto.getFromList(0);
setRegistros(produto);
// definirEstadoUI(ESTADO_CONSULTA);
} else {
limpaUI();
//definirEstadoUI(SEM_REGISTRO);
}
} // fim do método initTable
[ ]'s