Como transformar ArrayList em Object[]?

6 respostas
A

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

6 Respostas

paulorb.pacheco
java.util.ArrayList list = new java.util.ArrayList();
list.toArray();
cassio
Object[ ] arrayObj = seuArrayList.toArray();
Feijao

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.

A
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

ViniGodoy

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.

ViniGodoy

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.

Criado 20 de abril de 2007
Ultima resposta 20 de abr. de 2007
Respostas 6
Participantes 5