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
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
Voce já leu os artigos das features?
Se tiver duvidas em algo especifico é só falar.
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! 
[]'s
Nossa… agora que reparei que ainda não tenho artigo pro TableFilter. Vou escreve-lo em breve.
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
Criei um ObjectTableModel e agora mudou o erro 
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?
Hmm… posta seu codigo.
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
O campo nome_razao na classe Pessoa tem a anotação @Resolvable?
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… 
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);
}
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… 
Muito Obrigado pela atençao…
[]'s
Não vai poder usar o TableFilter. Mas pode usar o ObjectTableModel, JImagePanel, as classes de som, etc… etc… etc…
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?
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
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.
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… 
Se precisar de ajuda é só pedir! 
[]'s
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
Voce nao precisa colocar no banco, mas voce precisa dele no seu objeto.
Caso use Hibernate basta fazer isso:
@Transient
private Boolean selected;
[]'s
ah… muito obrigado…
muito bom esse projeto!!
agora… sobre o auto filtro
ele realmente não funfa com L&Fs
ja arrumaram algo?
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?
Eu faço isso pelo CellRenderer, quando eu tiver em casa e achar esse codigo eu te mostro como exemplo.
Com relação aos LAF, tive problemas com o Nimbus. Adivinhem o que eu fiz???
Que se dane o Nimbus… Vou de Towel…
\o/
Eu também prefiro praticidade.
Mas todos L&F causam problemas mesmo?
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).
\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.