preêncher array de String[] [Resolvido]

[code]initComponents();
LocacaoNegocio negocio = new LocacaoNegocio();
String[] novo = null;
Integer i = 0;

    CachedRowSetImpl copia = negocio.buscaClienteEcodigo();
    
    while(copia.next())
    {
        
        
        novo[i] = copia.getString("nome");
        i++;
        
        
    }[/code]

assim não funciona =D alguem ajuda? :smiley:
preciso preênchelo para jogar dentro de uma comboBox que servira como autoComplete :slight_smile:

array list não funciona para a comboBox que estou utilizando :frowning:

E está dando o erro NullPointerException?

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at br.com.adspoo.tela.Locacao.(Locacao.java:39)
at br.com.adspoo.tela.Admin.locacaoActionPerformed(Admin.java:334)
at br.com.adspoo.tela.Admin.access$700(Admin.java:7)
at br.com.adspoo.tela.Admin$8.actionPerformed(Admin.java:153)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:943)
at javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:585)
at javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:482)
at javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:428)
at javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:322)
at javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(BasicPopupMenuUI.java:869)
at java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2430)
at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2322)
at java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:2280)
at java.awt.Component.dispatchEventImpl(Component.java:4757)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:713)
at java.awt.EventQueue.access$000(EventQueue.java:104)
at java.awt.EventQueue$3.run(EventQueue.java:672)
at java.awt.EventQueue$3.run(EventQueue.java:670)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:686)
at java.awt.EventQueue$4.run(EventQueue.java:684)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:683)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

Pois é, olha o nosso querido NullPointerException aí.

Onde você instancia o valor de “novo”?

Repare que você o deixou apontando para null…

[quote=Hebert Coelho]Pois é, olha o nosso querido NullPointerException aí.

Onde você instancia o valor de “novo”?

Repare que você o deixou apontando para null…[/quote]

Arrumei aqui mas… tipo eu não tenho ideia de quantos registro vou ter , tem como mudar isso? exemplo hoje tenho 10 registros… amanhã tenho 20 ou 30 seila

olha o novo código

[code]public Locacao() throws SQLException {
initComponents();
LocacaoNegocio negocio = new LocacaoNegocio();
String[] novo = new String[100];
Integer i = 0;

    CachedRowSetImpl copia = negocio.buscaClienteEcodigo();
    
    try
    {
        while(copia.next())
        {
        
        
            novo[i] = copia.getString("nome");
            i++;
        
        }
    }
    catch(SQLException erro)
    {
        
    }
    AutoCompleteSupport.install(this.comboCliente, GlazedLists.eventListOf(novo));
    this.comboCliente.isEditable();
}[quote]

Por que você não usa então:
List novo = new ArrayList()?

Esse é o problema do array, ele não tem como redimensionar. ^^

Bom dia.

Já vi esse erro anteriormente a algum tempo atrás…

Como nosso amigo Hebert disse

criou uma referência mas deixou apontando para null…

é comum errarmos assim no início.

abraço

O problema e que estou utilizando uma biblioteca para fazer um autoComplete com a comboBox

e lá não aceita o ArrayList

malloc tipo em linguagem C , tem em java? posso utiliza-lo? ou vai contra alguma boa pratica

Seta pra String[] novo = “”; ao inves de nulo

[quote=robertorp]O problema e que estou utilizando uma biblioteca para fazer um autoComplete com a comboBox

e lá não aceita o ArrayList

malloc tipo em linguagem C , tem em java? posso utiliza-lo? ou vai contra alguma boa pratica[/quote]

Tenta fazer o seguinte

ao invés de querer guardar uma string direto no array
tenta guardar um objeto do tipo da classe ou algo do tipo

se me lembro poderá criar tipo assim

ArrayList< > AL1 = new ArrayList();

tem que ver a sintaxe se está ok

ou então tenta criar o array com o tipo da classe

ArrayList AL1 = new ArrayList( );

aí esse objeto vai ter tudo da classe.

Te um outro tema que se chama serialização
mas ainda não domino ele.

Sucesso.

Utilize como List e no final da operação passe para array:List<String> novoAsList = new ArrayList<String>() // utiliza a list tipo novoAsList.add("novo valor"); novo = novoAsList.toArray();

[quote=charleston10]Seta pra String[] novo = “”; ao inves de nulo[/quote]Mas como isso ajudaria no caso dele? Não consegui imaginar um modo.

O que o dado “copia” é, exatamente? Uma String[]? Não dá pra pegar o length dele e iniciar a String[] novo com ele?

Consegui a solução que precisava…

eu pego a quantidade de registros dentro de copia.size()
é instancio a variável String com o tamanho extado :slight_smile:
vlw galera :smiley:

[code]/**
* Creates new form Locacao
*/
public Locacao() throws SQLException {
initComponents();
LocacaoNegocio negocio = new LocacaoNegocio();
Integer i = 0;

    CachedRowSetImpl copia = negocio.buscaClienteEcodigo();
    
    Integer o = copia.size();
    String[] novo = new String[o];
    
    try
    {
        while(copia.next())
        {
            
            novo[i] = copia.getString("nome");
            i++;
        
        }
    }
    catch(SQLException erro)
    {
        
    }
    AutoCompleteSupport.install(this.comboCliente, GlazedLists.eventListOf(novo));
    this.comboCliente.isEditable();
}[/code]

na verdade você ainda continua passando o valor na mão: String[] novo = new String[100]; :lol: :lol: :lol:

[quote=Hebert Coelho]na verdade você ainda continua passando o valor na mão: String[] novo = new String[100]; :lol: :lol: :lol: [/quote]Ops, alguém corrigiu o post! :oops: :oops:

sim, hehe

editei o post lá corrigindo :slight_smile:

funciona =D

[quote=robertorp]Consegui a solução que precisava…

eu pego a quantidade de registros dentro de copia.size()
é instancio a variável String com o tamanho extado :slight_smile:
vlw galera :smiley:

[code]/**
* Creates new form Locacao
*/
public Locacao() throws SQLException {
initComponents();
LocacaoNegocio negocio = new LocacaoNegocio();
Integer i = 0;

    CachedRowSetImpl copia = negocio.buscaClienteEcodigo();
    
    Integer o = copia.size();
    String[] novo = new String[o];
    
    try
    {
        while(copia.next())
        {
            
            novo[i] = copia.getString("nome");
            i++;
        
        }
    }
    catch(SQLException erro)
    {
        
    }
    AutoCompleteSupport.install(this.comboCliente, GlazedLists.eventListOf(novo));
    this.comboCliente.isEditable();
}[/code][/quote]

Procure usar o jeito que o Hebert falou, pois não se usa mais vetor hoje em dia
por causa que seus métodos são muito lentos, dentre outros motivos.

As estruturas de list e arraylist são mais robustas atualmente para o que precisamos.