Projeto Towel - Começando a utilizar

26 respostas
DeGuedes

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

Marky.Vasconcelos

Voce já leu os artigos das features?

Se tiver duvidas em algo especifico é só falar.

DeGuedes

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

Marky.Vasconcelos

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

DeGuedes

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

DeGuedes

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?

Marky.Vasconcelos

Hmm… posta seu codigo.

DeGuedes
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

Marky.Vasconcelos

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

DeGuedes

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:

Marky.Vasconcelos

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);
	}
DeGuedes

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

ViniGodoy

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

Ironlynx

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?

DeGuedes

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

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.

DeGuedes

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

dudu_sps

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

Marky.Vasconcelos

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

DeGuedes

Caso use Hibernate basta fazer isso:

@Transient
    private Boolean selected;

[]'s

dudu_sps

ah… muito obrigado…

muito bom esse projeto!!

agora… sobre o auto filtro

ele realmente não funfa com L&Fs

ja arrumaram algo?

dudu_sps

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?

Marky.Vasconcelos

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

asandrob

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

Marky.Vasconcelos

\o/

Eu também prefiro praticidade.

Mas todos L&F causam problemas mesmo?

Ironlynx

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).

asandrob

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