Resize de header no autofiltro[Projeto Towel]

Peguei a SelectTable:

e tô fazendo umas mudanças nela, mas não consigo mudar o tamanho nas colunas de nenhum modo.Nem usando a classe Resizer(https://github.com/MarkyVasconcelos/Towel/blob/master/src/com/towel/swing/table/Resizer.java) nem de outras formas tipo:

TableColumnModel cm = tabela.getColumnModel(); for (int i = 0; i < MyTableModel.WIDTH.length; i++) { cm.getColumn(i).setPreferredWidth(MyTableModel.WIDTH[i]); }

Eu preciso que o texto de cada coluna no autofiltro(agora TableFilter) seja mostrado por completo(mesmo com 10 colunas, coloquei um scroll horizontal), e que suas colunas, sigam pelo menos o tamanho do respectivo header.

Vini, já precisou de algo semelhante? :?:

Você alterou autoResizeMode do JTable?

Se ele tiver em auto resize automático, não funciona mesmo.

Claro!E fiz:

Lá dentro do código do SelectTable mesmo.

Vini, eu descobri que o resize só funciona parcialmente.
Textos grandes, como “Data de cadastro”, aparece “Data …” no table filter.Já teve desse problema?

Eu fiz algumas alterações aqui e até que funcionou algumas coisas, roda esse teste com o jar em anexo e da uma olhada no comportamento.

import java.awt.Font;
import java.util.List;

import test.model.Person;
import test.model.PreData;

import com.towel.collections.paginator.ListPaginator;
import com.towel.el.annotation.AnnotationResolver;
import com.towel.swing.event.ObjectSelectListener;
import com.towel.swing.event.SelectEvent;
import com.towel.swing.table.ObjectTableModel;
import com.towel.swing.table.SelectTable;

public class SelectTableViewTest {
	public static void main(String[] args) {
		ObjectTableModel<Person> model = new ObjectTableModel<Person>(
				new AnnotationResolver(Person.class), "name:Extreme long name that will not fit the column header and a lot of random words to get more space,age:Age,live:Live");
		
		SelectTable<Person> st = new SelectTable<Person>(model,
				new ListPaginator<Person>(PreData.getSampleList(100), 20));
		st.setSelectionType(SelectTable.SINGLE);
//		st.setSize(400, 600);
		st.setFont(new Font("Arial", Font.ITALIC, 12));
//		st.useTableFilter(); //Para ativar o TableFilter, chame isso
		st.fitColumnsToHeader();
		st.showSelectTable();

		st.addObjectSelectListener(new ObjectSelectListener() {
			@Override
			public void notifyObjectSelected(SelectEvent selectevent) {
				Person p = (Person) selectevent.getObject();
				System.out.println(p.getName());
			}
		});
	}
}

E por mais que ele cresça, não sei por que, tanto o header normal quanto o do TableFilter cortam as ultimas letras.

Marky.Vasconcelos, melhorou o comportamento SEM o table filter, mas com o table filter, continuo as reticências.E um detalhe: a ordenação tá bagunçada.
Clique em “decrescente” e ao invés de 19 a 0, tá de 9 a 2 .19 a 10, 1,0.E se por ordem crescente, bagunça de novo.Esse comportamento está apenas na PRIMEIRA coluna desse seu exemplo.

Você está retornando Integer.class para a coluna ou String.class? Essa ordem que vc falou é a de Strings.

É por que esse campo no modelo é uma String, e a da segunda coluna é um inteiro.

Vou ver se adicionando margin resolve.

Ah, tá explicado.Ficou bacana poder desligar o autofiltro.

Marky, uma pergunta:
Se vc precisa colar o SelectTable a um JFrame/JPanel da vida como vc faz(agora que eu li a declaração e vi que ela não extende nem um nem outro)?(No meu caso eu fiz retornar um Jframe)

Container c = selectTableConstruida.getContent();
//Dai coloca 'c' onde quiser

O showSelectTable na verdade só faz isso:

	public void showSelectTable() {
		showSelectTable("Select");
	}

	public void showSelectTable(String title) {
		frame = new JFrame(title);
		frame.setContentPane(getContent());
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(2);
		frame.setVisible(true);
		closeOnDispose(new Closable() {
			@Override
			public void close() {
				frame.dispose();
			}

		});
	}

Uma coisa que eu não falei: Sempre que eu adiciono o SelectTable como um componente, ele sempre cria uma barra extra(vertical) o que acaba quebrando o layout da tela, mesmo com espaço de sobra.