Estou desenvolvendo uma aplicação que possui um grid (JTable) com várias colunas e para utilizar o espaço de uma melhor maneira, gostaria de iniciar o JTable com a largura das colunas do tamanho do conteúdo delas.
Alguém sabe por onde devo começar, o que devo pesquisar??
dai adicionas os campos com SEUCAMPO.setBounds(x, y, x, y )…
x e y é plano carteziano…
tenta ai …
talvez vc consiga…
java_Regi
foi mal,
postei no errado…
malz.
desculpas !
mauber
Isto não funcionou!
Eu tenho um DefaultTableModel definido para o JTable.
getAndSet
rissato
Pra dimensionar automaticamente em função do tamanho do maior valor de cada coluna, você pode medir o valor das células usando a classe FontMetrics. Fiz isso uma vez para posicionar componentes na tela. Deve funcionar tb pra redimensionar as colunas.
Klark
Ola, tente isso
public void packColumn(JTable tabela, int coluna, int margin) {
TableModel model = tabela.getModel();
DefaultTableColumnModel colModel = (DefaultTableColumnModel)tabela.getColumnModel();
TableColumn col = colModel.getColumn(coluna);
int width = 0;
// Obtém a largura do cabeçalho da coluna
TableCellRenderer renderer = col.getHeaderRenderer();
if (renderer == null) {
renderer = tabela.getTableHeader().getDefaultRenderer();
}
Component comp = renderer.getTableCellRendererComponent(tabela, col.getHeaderValue(), false, false, 0, 0);
width = comp.getPreferredSize().width;
// Obtém a largura maxima da coluna de dados
for (int r=0; r<tabela.getRowCount(); r++) {
renderer = tabela.getCellRenderer(r, coluna);
comp = renderer.getTableCellRendererComponent(tabela, tabela.getValueAt(r, coluna), false, false, r, coluna);
width = Math.max(width, comp.getPreferredSize().width);
}
width += 2*margin;
// Configura a largura
col.setPreferredWidth(width);
}
ricardo13
olá pessoal,
copiei este código e não funcionou…tenho campos maiores outros menores…mas ficassem com o tamanho do maior conteudo da coluna.
e tb naum entendi oq seria akele parametro margin.
Alguém poderia ajudar ??
Ricardo
wamarra
Tente o seguinte:
No getColumn(0) eu acessei a 1ª coluna, caso queira outra é só alterá-la para a coluna desejada
No setPreferredWidth(60) vc vai testando para saber qual o tamanho correto para sua coluna, se é 60, 70, 80…
Abraços
B
breno500as1 like
Cara eu dimensiono desta forma tbm:
jTableTeste.setModel(modelo);
jTableTeste.setRowHeight(50); //altera a altura da linha
jTableTeste.getColumn("Código").setPreferredWidth(50); //altera o comprimento da coluna
jTableTeste.getColumn("Nome").setPreferredWidth(140);
jTableTeste.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
doLayout();