Projeto Towel - Começando a utilizar

26 respostas
D

E ai galera, tava vendo sobre o projeto Towel e me interessei bastante por ele… porem eu gostaria de saber como iniciar com ele, fazer o auto-filtro e ordenação por colunas…

obrigado

[]'s

26 Respostas

M

Voce já leu os artigos das features?

Se tiver duvidas em algo especifico é só falar.

D

Opa, ja tinha dado uma olhada sim… porem a parte q mais me interessa nao tem link… ehhehe

Eu precisaria saber sobre o TableFilter… e como implementá-lo e saber basicamente como funciona, pois tenho mtas tabelas no meu sistema…

se vc puder me ajudar ficarei grato! :smiley:

[]'s

M

Nossa… agora que reparei que ainda não tenho artigo pro TableFilter. Vou escreve-lo em breve.

D

Marky… cara eu axei um metodo aqui:

TableFilter filtro = new TableFilter(JTabelaClientes.getTableHeader(), tmpessoa);
        JTabelaClientes.setModel(filtro);

porem ele me retorna isso:

java.lang.NullPointerException at com.towel.swing.table.headerpopup.TableHeaderPopup$FilteredHeaderRenderer.getTableCellRendererComponent(TableHeaderPopup.java:187) at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderRenderer(BasicTableHeaderUI.java:686) at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderHeight(BasicTableHeaderUI.java:721) at javax.swing.plaf.basic.BasicTableHeaderUI.createHeaderSize(BasicTableHeaderUI.java:750) at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:781) at javax.swing.JComponent.getPreferredSize(JComponent.java:1634) at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:78) at java.awt.Container.preferredSize(Container.java:1599) at java.awt.Container.getPreferredSize(Container.java:1584) at javax.swing.JComponent.getPreferredSize(JComponent.java:1636) at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:702) at org.pushingpixels.substance.internal.ui.SubstanceScrollPaneUI$AdjustedLayout.layoutContainer(SubstanceScrollPaneUI.java:465) at java.awt.Container.layout(Container.java:1421) at java.awt.Container.doLayout(Container.java:1410) at java.awt.Container.validateTree(Container.java:1507) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validate(Container.java:1480) at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:213) at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:470) at java.awt.Container.add(Container.java:365) at GUI.Base.Cadastros.BaseMDI.ClientesActionPerformed(BaseMDI.java:584) at GUI.Base.Cadastros.BaseMDI.access$300(BaseMDI.java:85) at GUI.Base.Cadastros.BaseMDI$4.actionPerformed(BaseMDI.java:194) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Seria incompatiblidade com o meu TableModel?

[]'s

D

Criei um ObjectTableModel e agora mudou o erro :smiley:

java.lang.NullPointerException at com.towel.swing.table.ObjectTableModel.getColumnName(ObjectTableModel.java:167) at com.towel.swing.table.TableFilter.getColumnName(TableFilter.java:703) at javax.swing.JTable.addColumn(JTable.java:2770) at javax.swing.JTable.createDefaultColumnsFromModel(JTable.java:1264) at javax.swing.JTable.tableChanged(JTable.java:4374) at javax.swing.JTable.setModel(JTable.java:3676) at GUI.Base.Cadastros.ListaClientes.<init>(ListaClientes.java:58) at GUI.Base.Cadastros.BaseMDI.ClientesActionPerformed(BaseMDI.java:583) at GUI.Base.Cadastros.BaseMDI.access$300(BaseMDI.java:85) at GUI.Base.Cadastros.BaseMDI$4.actionPerformed(BaseMDI.java:194) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

O q pode ser?

M

Hmm… posta seu codigo.

D
AnnotationResolver resolver = new AnnotationResolver(Pessoa.class);

        ObjectTableModel<Pessoa> tm = new ObjectTableModel<Pessoa>(resolver, "nome_razao");

        tm.setData(pessoa.findPessoaEntities());


        TableFilter filtro = new TableFilter(JTabelaClientes.getTableHeader(), tm);
        JTabelaClientes.setModel(filtro);

tai…

[]'s

M

O campo nome_razao na classe Pessoa tem a anotação @Resolvable?

D

Opa… hehehe acabei de adicionar e mudou o erro. saiusjaijsa

java.lang.NullPointerException at com.towel.swing.table.headerpopup.TableHeaderPopup$FilteredHeaderRenderer.getTableCellRendererComponent(TableHeaderPopup.java:187) at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderRenderer(BasicTableHeaderUI.java:686) at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderHeight(BasicTableHeaderUI.java:721) at javax.swing.plaf.basic.BasicTableHeaderUI.createHeaderSize(BasicTableHeaderUI.java:750) at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:781) at javax.swing.JComponent.getPreferredSize(JComponent.java:1634) at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:78) at java.awt.Container.preferredSize(Container.java:1599) at java.awt.Container.getPreferredSize(Container.java:1584) at javax.swing.JComponent.getPreferredSize(JComponent.java:1636) at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:702) at org.pushingpixels.substance.internal.ui.SubstanceScrollPaneUI$AdjustedLayout.layoutContainer(SubstanceScrollPaneUI.java:465) at java.awt.Container.layout(Container.java:1421) at java.awt.Container.doLayout(Container.java:1410) at java.awt.Container.validateTree(Container.java:1507) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validateTree(Container.java:1513) at java.awt.Container.validate(Container.java:1480) at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:213) at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:470) at java.awt.Container.add(Container.java:365) at GUI.Base.Cadastros.BaseMDI.ClientesActionPerformed(BaseMDI.java:584) at GUI.Base.Cadastros.BaseMDI.access$300(BaseMDI.java:85) at GUI.Base.Cadastros.BaseMDI$4.actionPerformed(BaseMDI.java:194) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

o msm q dava anteriormente quando eu passava a minha tableModel como parametro… :open_mouth:

M

Hmm… eu tenho o seguinte código e funciona:

//Considerando que Person tem os campos name, age e live anotados.

public static void main(String[] args) {
		ObjectTableModel<Person> model = new ObjectTableModel<Person>(
				new AnnotationResolver(Person.class), "name,age,live");
		
		model.setEditableDefault(true);
		
		JTable table = new JTable(model);
		
		TableFilter filter = new TableFilter(table);
		
		model.addAll(new PreData().getSampleList());
			
		JScrollPane pane = new JScrollPane();
		pane.setViewportView(table);
		
		JFrame frame = new JFrame();
		frame.getContentPane().add(pane);
		

		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
D

Ahhhh, descubri o culpado por isso… shaushausa

Seguinte cara, eu uso a biblioteca do susbtance e é ela q ta dando esse pau… tipo desabilitei ela e deu certo…

Entao infelizmente nao poderei utilizar o seu projeto… :frowning:

Muito Obrigado pela atençao…

[]'s

V

Não vai poder usar o TableFilter. Mas pode usar o ObjectTableModel, JImagePanel, as classes de som, etc… etc… etc…

I

To pensando em usar o Towel num projetinho aqui, mas me fala uma coisa:
Esse comportamento do TableFilter é só com o substance ou com qualquer LAF dá problema?

D

To pensando em usar o Towel num projetinho aqui, mas me fala uma coisa:
Esse comportamento do TableFilter é só com o substance ou com qualquer LAF dá problema?

Eu soh testei com substance aki, de repente com outros LAF funcione, para descobrir só testando… ;D

[]'s

M

Fiquei curioso também. Não sabia que isso aconteceria.

Em casa vou testar com uns L&Fs que tenho e ver o que acontece.

D

Marky.Vasconcelos:
Fiquei curioso também. Não sabia que isso aconteceria.

Em casa vou testar com uns L&Fs que tenho e ver o que acontece.

Pelo q eu vi eh por causa do renderer e o Header da tabela…

Cara seria interessante q funcionasse com L&F… :smiley:
Se precisar de ajuda é só pedir! :wink:

[]'s

D

não sei se devo perguntar aqui…
qualquer coisa abro outro topico

quero colocar um tipo boolean na minha tabela…
mas não está ligado com nenhum campo no banco

apenas para selecionar… e embaixo… terá as opções do que fazer com os registros selecionados

como faço pra colocar esse campo sem um field?

ou tenho que colocar??

grato

M

Voce nao precisa colocar no banco, mas voce precisa dele no seu objeto.

D

Caso use Hibernate basta fazer isso:

@Transient
    private Boolean selected;

[]'s

D

ah… muito obrigado…

muito bom esse projeto!!

agora… sobre o auto filtro

ele realmente não funfa com L&Fs

ja arrumaram algo?

D

um… tenho outra dúvida…

tem como eu deixar as celulas de uma determinada com foreground diferente

quero q as datas vencidas… fiquem vermelho!.. tem como?

M

Eu faço isso pelo CellRenderer, quando eu tiver em casa e achar esse codigo eu te mostro como exemplo.

A

Com relação aos LAF, tive problemas com o Nimbus. Adivinhem o que eu fiz???
Que se dane o Nimbus… Vou de Towel…

M

\o/

Eu também prefiro praticidade.

Mas todos L&F causam problemas mesmo?

I

agora… sobre o auto filtro
ele realmente não funfa com L&Fs

Não testei com o autofiltro, só com o selecttable, e nele, o LAF que eu uso perde o negrito(se tivesse um setFont no towel já resolveria).

A

Marky.Vasconcelos:
\o/

Eu também prefiro praticidade.

Mas todos L&F causam problemas mesmo?

Eu testei com vários, e o único que não funcionou foi o Nimbus.
Em tempo, é fácil traduzir o texto do AutoFiltro? As opções aparecem em inglês, e eu quero em protuguês.

Criado 30 de março de 2011
Ultima resposta 25 de ago. de 2011
Respostas 26
Participantes 6