Bom dia pessoal,
Estou criando uma JTable que recebe informações do banco de dados, porem cheguei em um ponto que não consigo resolver.
Como a JTable recebe informações do meu banco de dados em alguns campos o texto não é mostrado completamente, sendo assim tentei gerar a quebra de linha nas células em que o texto aparece cortado mas não estou conseguindo.
Tem alguma forma de fazer a quebra de linha somente nas linhas que contenha uma célula com texto maior que 200?
Segue o metodo que cria a tabela:
[code]
public void createTable() {
Border border = BorderFactory.createEmptyBorder(0,0,0,0);
scrTabela.setViewportBorder(border);
scrTabela.setBorder(border);
scrTabela.getViewport().setOpaque(false);
scrTabela.getViewport().setBackground(new Color(35,35,35));
dtmLog = new DefaultTableModel(new Object[][] {},
new String[] {“IDLOG”,“DATA”,“CLASSE”, “LINHA”, “METODO”, “LOGSISTEMA”,
“MENSAGEM” ,“FUNCODE”, “FUNNOME”, “FUNCAXCODE”, “FUNCAXNOME”,
“IDCAX”, “IDVEN”, “IDPEDIDO”, “LOGEMAIL”, “LOGERRO”}){
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
DefaultTableCellRenderer centro = new DefaultTableCellRenderer();
centro.setHorizontalAlignment(SwingConstants.CENTER);
DefaultTableCellRenderer esquerda = new DefaultTableCellRenderer();
esquerda.setHorizontalAlignment(SwingConstants.LEFT);
DefaultTableCellRenderer direita = new DefaultTableCellRenderer();
direita.setHorizontalAlignment(SwingConstants.RIGHT);
tblLog = new JTable(dtmLog);
tblLog.setAutoCreateRowSorter(true);
tblLog.getColumn("IDLOG").setPreferredWidth(80);
tblLog.getColumn("IDLOG").setResizable(false);
tblLog.getColumn("IDLOG").setCellRenderer(centro);
tblLog.getColumn("DATA").setPreferredWidth(160);
tblLog.getColumn("DATA").setResizable(false);
tblLog.getColumn("DATA").setCellRenderer(centro);
tblLog.getColumn("CLASSE").setPreferredWidth(200);
tblLog.getColumn("CLASSE").setResizable(false);
tblLog.getColumn("CLASSE").setCellRenderer(centro);
tblLog.getColumn("LINHA").setPreferredWidth(70);
tblLog.getColumn("LINHA").setResizable(false);
tblLog.getColumn("LINHA").setCellRenderer(centro);
tblLog.getColumn("METODO").setPreferredWidth(150);
tblLog.getColumn("METODO").setResizable(false);
tblLog.getColumn("METODO").setCellRenderer(centro);
tblLog.getColumn("LOGSISTEMA").setPreferredWidth(90);
tblLog.getColumn("LOGSISTEMA").setResizable(false);
tblLog.getColumn("LOGSISTEMA").setCellRenderer(centro);
tblLog.getColumn("MENSAGEM").setPreferredWidth(800);
tblLog.getColumn("MENSAGEM").setResizable(false);
tblLog.getColumn("MENSAGEM").setCellRenderer(centro);
tblLog.getColumn("FUNCODE").setPreferredWidth(80);
tblLog.getColumn("FUNCODE").setResizable(false);
tblLog.getColumn("FUNCODE").setCellRenderer(centro);
tblLog.getColumn("FUNNOME").setPreferredWidth(100);
tblLog.getColumn("FUNNOME").setResizable(false);
tblLog.getColumn("FUNNOME").setCellRenderer(centro);
tblLog.getColumn("FUNCAXCODE").setPreferredWidth(100);
tblLog.getColumn("FUNCAXCODE").setResizable(false);
tblLog.getColumn("FUNCAXCODE").setCellRenderer(centro);
tblLog.getColumn("FUNCAXNOME").setPreferredWidth(100);
tblLog.getColumn("FUNCAXNOME").setResizable(false);
tblLog.getColumn("FUNCAXNOME").setCellRenderer(centro);
tblLog.getColumn("IDCAX").setPreferredWidth(70);
tblLog.getColumn("IDCAX").setResizable(false);
tblLog.getColumn("IDCAX").setCellRenderer(centro);
tblLog.getColumn("IDVEN").setPreferredWidth(70);
tblLog.getColumn("IDVEN").setResizable(false);
tblLog.getColumn("IDVEN").setCellRenderer(centro);
tblLog.getColumn("IDPEDIDO").setPreferredWidth(100);
tblLog.getColumn("IDPEDIDO").setResizable(false);
tblLog.getColumn("IDPEDIDO").setCellRenderer(centro);
tblLog.getColumn("LOGEMAIL").setPreferredWidth(100);
tblLog.getColumn("LOGEMAIL").setResizable(false);
tblLog.getColumn("LOGEMAIL").setCellRenderer(centro);
tblLog.getColumn("LOGERRO").setPreferredWidth(100);
tblLog.getColumn("LOGERRO").setResizable(false);
tblLog.getColumn("LOGERRO").setCellRenderer(centro);
tblLog.getTableHeader().setBackground(new Color(130,130,130));
tblLog.getTableHeader().setFont(new Font("HelveticaNeueLT Std",Font.BOLD,12));
tblLog.getTableHeader().setForeground(new Color(35,35,35));
tblLog.getTableHeader().setBorder(null);
tblLog.setSelectionBackground(new Color(200, 200, 200));
tblLog.setSelectionForeground(new Color(35,35,35));
tblLog.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tblLog.setShowGrid(false);
tblLog.setGridColor(new Color(200, 200, 200));
tblLog.setShowHorizontalLines(true);
tblLog.setRowHeight(25);
tblLog.setFont(new Font("HelveticaNeueLT Std",Font.BOLD,12));
tblLog.setBackground(new Color(35,35,35));
tblLog.setForeground(new Color(200, 200, 200));
tblLog.setSelectionBackground(new Color(200,200,200));
tblLog.setSelectionForeground(new Color(35,35,35));
tblLog.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrTabela.setViewportView(null);
scrTabela.setViewportView(tblLog);
scrTabela.getVerticalScrollBar().setUI(new BasicScrollBarUI());
scrTabela.getHorizontalScrollBar().setUI(new BasicScrollBarUI());
UIManager.put("ScrollBar.background",new Color(35,35,35));
UIManager.put("ScrollBar.foreground",new Color(35,35,35));
UIManager.put("ScrollBar.highlight",new Color(35,35,35));
UIManager.put("ScrollBar.shadow",new Color(35,35,35));
UIManager.put("ScrollBar.darkShadow",new Color(35,35,35));
scrTabela.getVerticalScrollBar().updateUI();
scrTabela.getHorizontalScrollBar().updateUI();
}[/code]
Este metodo popula a tabela:
[code]
public void fillTable(String busca) {
ResultSet rs = null;
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy HH:mm:ss”);
DecimalFormat df = new DecimalFormat("#,##0.00");
while (tblLog.getRowCount() > 0){
dtmLog.removeRow(0);
}
try {
rs = ListaLogDao.getListaLog(busca);
while (rs.next()) {
Object row[] = new Object[16];
row[0] = rs.getString(“idLog”);
row[1] = sdf.format(rs.getTimestamp(“logData”));
row[2] = rs.getString(“logClasse”);
row[3] = rs.getString(“logLinha”);
row[4] = rs.getString(“logMetodo”);
row[5] = rs.getString(“logSistema”);
row[6] = rs.getString(“logMensagem”);
row[7] = rs.getString(“logFunCode”);
row[8] = rs.getString(“logFunNome”);
row[9] = rs.getString(“logFunCaxCode”);
row[10] = rs.getString(“logFunCaxNome”);
row[11] = rs.getString(“idCax”);
row[12] = rs.getString(“idVen”);
row[13] = rs.getString(“idPedido”);
row[14] = rs.getString(“logEmail”);
row[15] = rs.getString(“logErro”);
dtmLog.addRow(row);
}
if(tblLog.getRowCount() > 0){
dtmLog.fireTableDataChanged();
}
tblLog.getColumnModel();
lModel = tblLog.getSelectionModel();
} catch (SQLException ex) {
Mensagens.erroLog(this, ex.getMessage());
}
}[/code]
O campo que esta tem mais de 500 caracteres em que o texto aparece cortado é:
row[6] = rs.getString("logMensagem");
Desde ja agradeço a ajuda,
Valeu.