olá pessoal naum estou muito habituado ainda com o java e estou com um probleminha…
como eu transformo um ArrayList em um Object[]???
quero colocar os itens dentro de um jTable…
:oops:
Vlw galera
olá pessoal naum estou muito habituado ainda com o java e estou com um probleminha…
como eu transformo um ArrayList em um Object[]???
quero colocar os itens dentro de um jTable…
:oops:
Vlw galera
java.util.ArrayList list = new java.util.ArrayList();
list.toArray();
Object[ ] arrayObj = seuArrayList.toArray();
Existem algumas maneiras, mas a melhor de todas que nunca falha é a seguinte:
String[] str = list.toArray(]);new String[list.size()
Trocando-se o tipo para o desejado (neste exemplo String).
Pode parecer absurdo, mas o toArray pede uns casts e ou não funciona ou eu sou mané e não sei usar mesmo.
jTable1.setModel(new DefaultTableModel((Object[][]) bd.getColunasTabela().toArray(), bd.getColunasTabela().toArray()));
este codigo que estou usando…
e da este erro
Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: [Ljava.lang.Object;
at br.com.knbs.SISCAD.GUI.telaPadrao.(telaPadrao.java:37)
at br.com.knbs.SISCAD.GUI.mainGUI.createFrame(mainGUI.java:164)
at br.com.knbs.SISCAD.GUI.mainGUI.arvoreBDValueChanged(mainGUI.java:139)
at br.com.knbs.SISCAD.GUI.mainGUI.access$000(mainGUI.java:22)
at br.com.knbs.SISCAD.GUI.mainGUI$1.valueChanged(mainGUI.java:62)
at javax.swing.JTree.fireValueChanged(JTree.java:2399)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:2770)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:629)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1078)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:287)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java:170)
at javax.swing.JTree.setSelectionPath(JTree.java:1174)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2296)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelectionImpl(BasicTreeUI.java:3505)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:3480)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3461)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:222)
at java.awt.Component.processMouseEvent(Component.java:5485)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3889)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
eu tenho um array que contem as colunas da tabela… e quero adicionar os campos no “header” da jtable… msm assim obrigado pela ajuda
Esse cast que você está tentando fazer é impossível.
Você tem dois vetores de object[] e quer transforma-los dinamicamente num object[][]? Hummm…
Além disso a sintaxe, do jeito que você escreveu, simplesmente não existe.
A dica que eu dou (e tenho dado com bastante frequência por aqui) é: não utilize o DefaultTableModel. Você pode deixar o seu código mais modularizado, flexível e claro implementando o seu proprio TableModel, filho de AbstractTableModel.
Dê uma procurada sobre como fazer isso. Você vai ver que o grau de controle sobre o comportamento do seu JTable também é bem maior.
PS: talvez isso aqui funcione mas, ainda assim, recomendo que você implemente o seu próprio TableModel:
Object[] colunas = bd.getColunasTabela().toArray();
jTable1.setModel(new DefaultTableModel(new Object[][] {colunas, colunas});
Na dúvida entre cast e criação de um objeto novo, geralmente a solução está na criação do novo. Cast só é possível quando os tipos de dados são compatíveis.