Gostaria de perguntar se alguém sabe alguma forma de fazer com um texto grande caixa em uma célula de jtable, tipo… não aumentando a largura da coluna, fazendo que nem acontece no word ou no excel. Ex. ao invés de :
| textotextotextotextotextotextotextotextotexto…| -> Texto grande que não cabe na célula
isto:
| textotextotextotextotextotextotextotextotexto | -> Texto grande que cabe na célula
textotextotexto
Mais ou menos que nem se fosse um jtextarea ou numa tabela no html.
Se eu entendi bem, a opção setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS) faz isso para você.
Tchauzin!
E
entanglement
Pelo que imagino, o carinha quer que se o texto for muito grande, ele ou invada a célula seguinte, como no Excel, ou então que haja uma quebra de linha (no caso do Excel você precisa formatar a célula para que ele quebre as linhas.
Ambas essas coisas não estão prontas no JTable, que não tem nem 1% dos recursos do Excel.
(O grande problema do JTable é que todo mundo acha que dá para fazer qualquer coisa que o Excel faz com um JTable )
L
lina
entanglement:
Pelo que imagino, o carinha quer que se o texto for muito grande, ele ou invada a célula seguinte, como no Excel, ou então que haja uma quebra de linha (no caso do Excel você precisa formatar a célula para que ele quebre as linhas.
Ambas essas coisas não estão prontas no JTable, que não tem nem 1% dos recursos do Excel.
(O grande problema do JTable é que todo mundo acha que dá para fazer qualquer coisa que o Excel faz com um JTable )
Oi,
É. Se for isso… =/
Tchauzin!
J
Jubarius
Boa noite amigos
É realmente o que eu queria era fazer que nem se faz no excel, quando a gente configura a uma célula para ajustar o tamanho do texto para caber em uma célula. Como vocês disseram o JTable não é o excel, é muito mais divertido, dando uma “googleada” consegui o seguinte código, se alguém também precisar, que resolveu o meu problema:
importjava.awt.Component;importjava.awt.Dimension;importjavax.swing.JTable;importjavax.swing.JTextArea;importjavax.swing.table.TableCellRenderer;publicclassTabelaTextAreaRendererextendsJTextAreaimplementsTableCellRenderer{// This method is called each time a cell in a column// using this renderer needs to be rendered.publicTabelaTextAreaRenderer(){setLineWrap(true);setWrapStyleWord(true);}publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introwIndex,intvColIndex){// 'value' is value contained in the cell located at// (rowIndex, vColIndex)if(isSelected){// cell (and perhaps other cells) are selected}if(hasFocus){// this cell is the anchor and the table has the focus}// Configure the component with the specified valuesetText(value.toString());// Set tool tip if desiredsetToolTipText((String)value);// Since the renderer is a component, return itselfreturnthis;}}
Este código transforma uma célula de um JTable em uma TextArea ou qualquer outro componente que quizer.
Obrigado pela ajuda pessoal.
Juba
D
DR_Felix
Jubarius:
Boa noite amigos
É realmente o que eu queria era fazer que nem se faz no excel, quando a gente configura a uma célula para ajustar o tamanho do texto para caber em uma célula. Como vocês disseram o JTable não é o excel, é muito mais divertido, dando uma “googleada” consegui o seguinte código, se alguém também precisar, que resolveu o meu problema:
importjava.awt.Component;importjava.awt.Dimension;importjavax.swing.JTable;importjavax.swing.JTextArea;importjavax.swing.table.TableCellRenderer;publicclassTabelaTextAreaRendererextendsJTextAreaimplementsTableCellRenderer{// This method is called each time a cell in a column// using this renderer needs to be rendered.publicTabelaTextAreaRenderer(){setLineWrap(true);setWrapStyleWord(true);}publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introwIndex,intvColIndex){// 'value' is value contained in the cell located at// (rowIndex, vColIndex)if(isSelected){// cell (and perhaps other cells) are selected}if(hasFocus){// this cell is the anchor and the table has the focus}// Configure the component with the specified valuesetText(value.toString());// Set tool tip if desiredsetToolTipText((String)value);// Since the renderer is a component, return itselfreturnthis;}}
Este código transforma uma célula de um JTable em uma TextArea ou qualquer outro componente que quizer.
Obrigado pela ajuda pessoal.
Juba
Poxa Muito Obrigado Resolveu um problema meu.
P
patyboian
oi gente,
sei que este tópico é bem antiguinho, mas estou com o mesmo problema.
ok, se eu criar uma classe como essa que vcs passaram, como faço a chamada para minha tabela?
Não entendi isso.
J
Jubarius
Oi, patyboian
Realmente o tópico é bem antigo e realmente eu não me recordo onde é que está o código onde usei isto. Porém, alguém me corrija se eu estiver errado, se eu não me engano funciona assim:
//Declaração da tua tabelaJTabletbl=newJTable();//tbl.getColumnModel().getColumn(/*índicedatuacoluna*/).setCellRenderer(/*---->seucellrendereraqui<----*/);
obs: Estou considerando que você já tenha criado o seu CellRenderer.