Quebra de linha em um JTable

0 respostas
D

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:
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();
    }
Este metodo popula a tabela:
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());
        }
    }
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.

Criado 20 de janeiro de 2014
Respostas 0
Participantes 1