Ajuda para inserir itens do arraylist na tela[Resolvido]

oi!
ah tenho um arraylist com este conteudo

artes 1 biologia 1 biologia 2 biologia 3 biologia 4 biologia 5 biologia 6 ... sociologia 1 sociologia 2 sociologia 3
alguem pode me ajudar a colocar estes itens neste formato

artes	        biologia

1 1
2
3


e assim por diante
eu ate achei um forum do guj que fala sobre isso mas ainda nao consegui resolver tipo eu não quero adicionar na tela disciplinas repetidas e sim todos os modulos das mesmas,tem como excluir os repetidos sem excluir os modulos?
obg

kra da uma explicada melhor… num entendi o objetivo do q vc falow… até o exemplo fiko esquisito…

oi bah ficou ruim meu exemplo mesmo
é que eu qria colocar na tela tipo o nome das disciplinas e embaixo de cada uma seus respectivos modulos so que como as disciplinas e modulos no banco estão armazenadas daquela maneira que eu postei anteriormente eu queria saber se tipo tem uma maneira com que eu possa adicionar aqueles itens na tela sem repetir o nome das disciplinas dai eu ate encontrei algo que da para resolver isso aquihttp://www.guj.com.br/java/116888-problema-com-valores-repetidos-em-um-arraylist
isso resolve so que o problema é q se eu utilizar estes metodos não vão se repetir as disciplinas e os modulos :slight_smile:
espero ter descrito melhor agora
obg

tipo eu ja tentei fazer isto de varias formas usando metodo que eles explicaram no outro forum do guj
ficou assim

[code]Collection disciplina_modulo=new ArrayList();
resultado = comando.executeQuery(“select Id_disciplina,modulo from disc_modulo where ensino=’”+1+"'order by Id_disciplina");
while (resultado.next())
{
disciplina_modulo.add(resultado.getObject(1).toString());
disciplina_modulo.add(resultado.getObject(2).toString());
}

		disciplina_modulo = Collections.singleton(new HashSet(disciplina_modulo));  

		for (Object object : disciplina_modulo) {  
			System.out.println(object.toString());  

			System.out.println(disciplina_modulo.toString());

[/code]
funciona perfeitamente mas não posso usar porcausa dos modulos

ah ja tentei fazer isto com vetores normais e uma matriz dai ficou mais ou menos assim

[code]String disciplinas[];
String modulos[];
Object itensTela[][] ;
Container tela;

JButton b,b1,b2;
public modulos()
{

	super ("Ensino Medio");   
	tela = getContentPane ();
	tela.setLayout(null); 

	try {
		conexao = conecta.conectabanco();
		comando = conexao.createStatement();
	}
	catch(Exception x) {
		JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
	}

	try{
		int tamanhoVetor=0;
		resultado = comando.executeQuery("select distinct Id_disciplina from disc_modulo where ensino='"+1+"' order by Id_disciplina");
		while (resultado.next())
		{ 
			tamanhoVetor++;
			disciplinas=new String[tamanhoVetor];System.out.println("tam de v: "+disciplinas.length);
		}

		int size=0;
		resultado = comando.executeQuery("select distinct Id_disciplina from disc_modulo where ensino='"+1+"' order by Id_disciplina");
		while (resultado.next())
		{ 
			disciplinas[size]=resultado.getObject(1).toString();
			size++;
		}

		int tamanho=0;
		for(int i=0;i<disciplinas.length;i++)
		{
			resultado = comando.executeQuery("select modulo from disc_modulo where ensino='"+1+"'and Id_disciplina='"+disciplinas[i]+"' order by modulo");
			while (resultado.next())
			{ 
				tamanho++;
				modulos=new String[tamanho];System.out.println("tam de modulos:"+ modulos.length);
			}
		}
			
		    int quantidade=0;String maior=null;
			resultado = comando.executeQuery("select max(modulo) from disc_modulo ");
			while (resultado.next())
			{ 
				maior=resultado.getObject(1).toString();
			}
			if(maior!=null)
			{
				quantidade=Integer.parseInt(maior);
			}

			itensTela=new Object[disciplinas.length][quantidade+1]; 

			for(int i=0;i<itensTela.length;i++)
			{
				if(disciplinas[i]!=null)
				{
					itensTela[i][0]=new JCheckBox(disciplinas[i]);
					if(itensTela[i][0]!=null)
					{((Component) itensTela[i][0]).setBounds(x, y1, 150, 25);
					tela.add((Component) itensTela[i][0]);
					x+=150;
					if(i==4 || i==9 || i==14 || i==19 )
					{
						x=20;
						y1+=180;	
						tela.repaint(); 
					}
					}


				}


			}
		
		}

		catch(Exception e)
		{
			e.printStackTrace();
		}[/code]

eu tb consigo inserir na tela deste jeito e fica bem certinho as disciplinas mas o problema é na hora de colocar os modulos na tela
tipo tu sabe como eu faço para ir trocando so as colunas e não as linhas da matriz ja que as disciplinas ficam todas na coluna 0 eu apenas deveria inserir em cada linha os modulos correspondentes aquela disciplina trocando de modulos dai ficaria assim na minha matriz m[0][0]
coluna 0 coluna 1 coluna2 coluna3
linha 0 biologia modulo1 modulo2 modulo3
pode me ajudar?
mto obg:)

n sei como funciona banco de dados mas axo q isso ajuda

instancie

//String nome, List de modulos se int use Integer, se String use String HashMap<String, ArrayList<Integer>> mapaDisciplina = new HashMap<String, ArrayList<Integer>>(); //chaves do mapa ArrayList<String> listaDisciplinas = new ArrayList<String>();

para adicionar

[code] String disciplina = “NomeDaDisciplina”;//exemplo
ArrayList listaModulos = mapaDisciplina.get(disciplina);

    //verifica se ja existe disciplina, se n devemos criar
    if (listaModulos == null) {
        //cria a lista de modulos
        listaModulos = new ArrayList<Integer>();
        //adiciona a chave
        listaDisciplinas.add(disciplina);
        //adiciona a lista no mapa
        mapaDisciplina.put(disciplina, listaModulos);
    }
    int numeroDoModulo = 0;//exemplo
    listaModulos.add(numeroDoModulo);

[/code]

para transformar em array

[code] //para exibir
//Converter para array
String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);

    //para pegar a lista de modulos da disciplina arrayDeDisciplinas[0]

    ArrayList<Integer> listaDeModulos = mapaDisciplina.get(arrayDeDisciplinas[0]);
    //Converter para array
    Integer[] arrayDeModulos = listaDeModulos.toArray(new Integer[0]);[/code]

os imports se precisar

import java.util.ArrayList; import java.util.HashMap;

ola ChronosSage!
bah obrigada pela ajuda desta maneira ficou mais facil para obter as disciplinas e modulos mas nessa linha String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);
tipo eu usei um system para imprimir talvez eu tenha feita de forma errada mas inves de sair o conteudo aparece o endereco de memoria do objeto tipo eu fiz isso System.out.println(listaDeModulos+"¨¨"+"\n"+arrayDeDisciplinas.toString()+" **"); depois do seu codigo [code]//Converter para array
String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);

								//para pegar a lista de modulos da disciplina arrayDeDisciplinas[0]  
								  
								ArrayList<Integer> listaDeModulos = mapaDisciplina.get(arrayDeDisciplinas[0]);  
								//Converter para array  
								Integer[] arrayDeModulos = listaDeModulos.toArray(new Integer[0]); [/code]

dai no console ficou assim

[1, 2, 3, 4, 5, 6]¨¨ [Ljava.lang.String;@feb48 ** [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]¨¨ [Ljava.lang.String;@11ff436 ** [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]¨¨ [Ljava.lang.String;@da3a1e ** [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]¨¨ [Ljava.lang.String;@11dba45 ** [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]¨¨ [Ljava.lang.String;@b03be0 ** ...
ah e antes de tudo isso apos a criacao dos arrayslist conforme tu disseste fiz o seguinte [code]resultado = comando.executeQuery(“select Id_disciplina,modulo from disc_modulo where ensino=’”+1+"’");
while (resultado.next())
{
String disciplina = resultado.getString(1);//exemplo
ArrayList listaModulos = mapaDisciplina.get(disciplina);

									//verifica se ja existe disciplina, se n devemos criar  
									if (listaModulos == null) {  
									    //cria a lista de modulos  
									    listaModulos = new ArrayList<Integer>();  
									    //adiciona a chave  
									    listaDisciplinas.add(disciplina);  
									    //adiciona a lista no mapa  
									    mapaDisciplina.put(disciplina, listaModulos);  
									}  
									int numeroDoModulo = resultado.getInt(2);//exemplo  
									listaModulos.add(numeroDoModulo);  
									
								}[/code]

obrigada pela ajuda e ah minha duvida é por as disciplinas estao saindo assim no console apos a conversao
:slight_smile:

so uma coisa eu nao to conseguindo adicionar os itens do meu array depois da conversao na tela ja tentei usar um cating tela.add((Component)arrayDeDisciplinas); ja tentei desta maneira for(int i=0;i<arrayDeDisciplinas.length;i++){tela.add(arrayDeDisciplinas[i]);}e tb nao deu :frowning:

muito obrigada pela ajuda e explicações estou editando umas coisas e qualquer coisa eu posto de novo!
:slight_smile:

Trocar por(Serve pra qualquer tipo de array[], n serve para matriz)

hmm agora eu to conseguindo imprimir os objetos contidos no vetor mas to com outro problema :frowning: nao to conseguindo add na tela sabe ja tentei um pouco de tudo mas nao consigo add na tela:(
eu tentei [code]int num=0,posicao=0;

									if(num<quantidade+1)
									{
										itensTela[posicao][num]=new JCheckBox(arrayDeDisciplinas[posicao]);
									((Component) itensTela[posicao][num]).setBounds(x,y1,120,25);
									if( itensTela[posicao][num] != null)
									tela.add((Component) itensTela[posicao][num]);
									itensTela[posicao][num]=new JCheckBox(""+arrayDeModulos[posicao]);
									((Component) itensTela[posicao][num]).setBounds(x,y1,120,25);
									if( itensTela[posicao][num] != null)
									tela.add((Component) itensTela[posicao][num]);
									num++;
									if( itensTela[posicao][num] != null)
									System.out.println(((AbstractButton) itensTela[posicao][num]).getText()+" pos "+posicao+" num "+num);
									}
									else
									{
										posicao++;
										num=0;
										if( itensTela[posicao][num] != null)
										tela.add((Component) itensTela[posicao][num]);
									}

									x+=150;
									if(i==4 || i==9 || i==14 || i==19 )
									{
										x=20;
										y1+=180;	
										tela.repaint(); 
									}

[/code]
e tambem [code]int num=0,posicao=0,x1=20,y2=60;

								if(num<quantidade+1)
								{
									itensTela[posicao][num]=new JCheckBox(""+arrayDeModulos[posicao]);
								((Component) itensTela[posicao][num]).setBounds(x1,y2,120,25);
								if(((AbstractButton) itensTela[posicao][num]).getText() != null)
								{tela.add((Component) itensTela[posicao][num]);
								num++;	
								}
								else
								{
									System.out.println("no else depois de add na tela...num "+num+" pos "+posicao+" itenstela "+((AbstractButton) itensTela[posicao][num]).getText());
								}

// System.out.println("no if se num é menor qnte "+((AbstractButton) itensTela[posicao][num]).getText());
}
if(num==quantidade+1)
{
posicao++;
num=posicao;System.out.println("se num for igual ao qntde…posicao “+posicao+” num “+num+” qnte "+quantidade);
}

								x1+=150;
								if(posicao==4 || posicao==9 || posicao==14 || posicao==19 )
								{
									x1=20;
									y2+=180;	
									tela.repaint(); System.out.println("alterando as posicoes");
								}
								[/code]

ah fiz estes codigos apos as conversões mas nao consigo exibir nada disso na tela :frowning:
pode me ajudar a encontrar o erro no codigo?
:cry: bg

[quote=paty_trind]so uma coisa eu nao to conseguindo adicionar os itens do meu array depois da conversao na tela ja tentei usar um cating tela.add((Component)arrayDeDisciplinas); ja tentei desta maneira for(int i=0;i<arrayDeDisciplinas.length;i++){tela.add(arrayDeDisciplinas[i]);}e tb nao deu :frowning:

muito obrigada pela ajuda e explicações estou editando umas coisas e qualquer coisa eu posto de novo!
:)[/quote]

vc n pode adicionar array diretamente na tela, array n é component

tente isso

[code] public static void main(String[] args) {
//instancia de teste, n deve ter isso na sua aplicaçao, usei para teste
String arrayDeDisciplinas[] = {“Disciplina0”, “Disciplina1”};
HashMap<String, ArrayList> mapaDisciplina = new HashMap<String, ArrayList>();
mapaDisciplina.put(arrayDeDisciplinas[0], new ArrayList());
mapaDisciplina.put(arrayDeDisciplinas[1], new ArrayList());
mapaDisciplina.get(“Disciplina0”).add(“Modulo00”);
mapaDisciplina.get(“Disciplina1”).add(“Modulo10”);
mapaDisciplina.get(“Disciplina0”).add(“Modulo01”);
mapaDisciplina.get(“Disciplina0”).add(“Modulo02”);
mapaDisciplina.get(“Disciplina1”).add(“Modulo11”);

    //tela, se inserir exatamente assim pode ser q funcione
    JPanel tela = new JPanel();
    tela.setLayout(null);
    int colunas = arrayDeDisciplinas.length;
    JCheckBox[][] matrizModulo = new JCheckBox[colunas][0];
    int x = 0,y = 0;
    int maxX = 0, maxY = 0;
    for (int c = 0; c < colunas; c++) {
        x = x + 10;
        y = (c / 5)*180;
        JLabel disciplina = new JLabel(arrayDeDisciplinas[c]);
        disciplina.setBounds(x, y, 150, 25);
        tela.add(disciplina);
        y = y + 25;
        
        ArrayList<String> modulos = mapaDisciplina.get(arrayDeDisciplinas[c]);
        int linhas = modulos.size();
        matrizModulo[c] = new JCheckBox[linhas];
        for (int l = 0; l < linhas; l++) {
            matrizModulo[c][l] = new JCheckBox(modulos.get(l));
            matrizModulo[c][l].setBounds(x, y, 150, 25);
            tela.add(matrizModulo[c][l]);
            y = y + 25;

            maxY = Math.max(maxY, y);
        }
        x = x + 150;

        maxX = Math.max(maxX, x);
    }
    tela.setPreferredSize(new Dimension(maxX, maxY));

    
    //teste execuçao
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(tela);
    frame.pack();
    frame.setVisible(true);
}[/code]

ah so um minuto to tentando molda para meu codigo a sua estrutura tah tipo agora entendi pq nao da para adicionar os itens direto na tela int colunas = arrayDeDisciplinas.length; JCheckBox[][] matrizModulo = new JCheckBox[colunas][0]; for (int c = 0; c < colunas; c++) { ArrayList<Integer> mode = mapaDisciplina.get(arrayDeDisciplinas[c]); int linhas = mode.size(); matrizModulo[c] = new JCheckBox[linhas]; for (int l = 0; l < linhas; l++) { matrizModulo[c][l] = new JCheckBox(""+mode.get(l)); matrizModulo[c][l].setBounds(x, y, 150, 25); tela.add(matrizModulo[c][l]); y = y + 25; }
e tipo meu programa trava:(
o q estou faznd errado?
obg pela ajuda:)

[quote=paty_trind]ah so um minuto to tentando molda para meu codigo a sua estrutura tah tipo agora entendi pq nao da para adicionar os itens direto na tela int colunas = arrayDeDisciplinas.length; JCheckBox[][] matrizModulo = new JCheckBox[colunas][0]; for (int c = 0; c < colunas; c++) { ArrayList<Integer> mode = mapaDisciplina.get(arrayDeDisciplinas[c]); int linhas = mode.size(); matrizModulo[c] = new JCheckBox[linhas]; for (int l = 0; l < linhas; l++) { matrizModulo[c][l] = new JCheckBox(""+mode.get(l)); matrizModulo[c][l].setBounds(x, y, 150, 25); tela.add(matrizModulo[c][l]); y = y + 25; }
e tipo meu programa trava:(
o q estou faznd errado?
obg pela ajuda:)[/quote]

verifique os loops ou
post o codigo completo da classe e se apresentar algum erro tabem para q eu possa identificar o problema

Ah o codigo ficou mais ou menos assim

[code]for(int i=0;i<itensTela.length;i++)
for(int j=0;j<itensTela[i].length;j++)
{
// if(((JCheckBox) itensTela[i][0]).isSelected())
//{
try{ int x = 0,y = 0;
resultado = comando.executeQuery("select max(modulo) from disc_modulo ");
while (resultado.next())
{
maior=resultado.getObject(1).toString();
}
if(maior!=null)
{
quantidade=Integer.parseInt(maior);
}

							resultado = comando.executeQuery("select Id_disciplina,modulo from disc_modulo where ensino='"+1+"'");
							while (resultado.next())
							{ 
								String disciplina = resultado.getString(1);//exemplo  
								ArrayList<Integer> listaModulos = mapaDisciplina.get(disciplina);  
								  
								//verifica se ja existe disciplina, se n devemos criar  
								if (listaModulos == null) {  
								    //cria a lista de modulos  
								    listaModulos = new ArrayList<Integer>();  
								    //adiciona a chave  
								    listaDisciplinas.add(disciplina);  
								    //adiciona a lista no mapa  
								    mapaDisciplina.put(disciplina, listaModulos);  
								}  
								int numeroDoModulo = resultado.getInt(2);//exemplo  
								listaModulos.add(numeroDoModulo);  
								
							}
							//para exibir  
							//Converter para array  
							String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);  
							  
							//para pegar a lista de modulos da disciplina arrayDeDisciplinas[0]  
							  
							ArrayList<Integer> listaDeModulos = mapaDisciplina.get(arrayDeDisciplinas[0]);  
							//Converter para array  
							Integer[] arrayDeModulos = listaDeModulos.toArray(new Integer[0]);  
							
							int colunas = arrayDeDisciplinas.length;  
						    
							JPanel telap = new JPanel();  
						    telap.setLayout(null);  
						    int colunas1 = arrayDeDisciplinas.length;  
						    JCheckBox[][] matrizModulo = new JCheckBox[colunas1][0];  
						    int x1 = 0,y1 = 0;  
						    int maxX = 0, maxY = 0;  
						    for (int c = 0; c < colunas1; c++) {  
						        x1 = x1 + 10;  
						        y1 = (c / 5)*180;  
						        JLabel disciplina = new JLabel(arrayDeDisciplinas[c]);  
						        disciplina.setBounds(x1, y1, 150, 25);  
						        tela.add(disciplina);  
						        y1 = y1 + 25;  
						          
						        ArrayList<Integer> modulos = mapaDisciplina.get(arrayDeDisciplinas[c]);  
						        int linhas = modulos.size();  
						        matrizModulo[c] = new JCheckBox[linhas];  
						        for (int l = 0; l < linhas; l++) {  
						            matrizModulo[c][l] = new JCheckBox(modulos.get(l)+"");  
						            matrizModulo[c][l].setBounds(x1, y1, 150, 25);  
						            tela.add(matrizModulo[c][l]);  
						            y1 = y1 + 25;  
						  
						            maxY = Math.max(maxY, y1);  
						        }  
						        x1 = x1 + 150;  
						  
						        maxX = Math.max(maxX, x1);  
						    }  
						    telap.setPreferredSize(new Dimension(maxX, maxY));  
						    tela.add(telap);
						    tela.repaint();
						}[/code]

o erro que ocorre é o seguinte

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source) at java.lang.AbstractStringBuilder.append(Unknown Source) at java.lang.StringBuilder.append(Unknown Source) at javax.swing.plaf.basic.BasicButtonUI.installDefaults(Unknown Source) at javax.swing.plaf.basic.BasicRadioButtonUI.installDefaults(Unknown Source) at javax.swing.plaf.metal.MetalRadioButtonUI.installDefaults(Unknown Source) at javax.swing.plaf.metal.MetalCheckBoxUI.installDefaults(Unknown Source) at javax.swing.plaf.basic.BasicButtonUI.installUI(Unknown Source) at javax.swing.JComponent.setUI(Unknown Source) at javax.swing.AbstractButton.setUI(Unknown Source) at javax.swing.JCheckBox.updateUI(Unknown Source) at javax.swing.AbstractButton.init(Unknown Source) at javax.swing.JToggleButton.<init>(Unknown Source) at javax.swing.JCheckBox.<init>(Unknown Source) at javax.swing.JCheckBox.<init>(Unknown Source) at TelaDeEscolhaModulos.<init>(TelaDeEscolhaModulos.java:184) at Menu$4.actionPerformed(Menu.java:306) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) ....
o erro ocorre nesta linha matrizModulo[c][l] = new JCheckBox(modulos.get(l)+"");

oooi ChronosSage!!!
olha so consegui arrumar em partes a tela tipo eu consigo editar as disciplinas direitinho na tela mas quando eu tento inserir os modulos da nullpointerexception nesta linha int linhas = modulos.size(); //null
e neste momento meu codigo ta assim[code] int colunas1 = arrayDeDisciplinas.length;
JCheckBox[][] matrizModulo = new JCheckBox[colunas1][0];
int x1 = 0,y1 = 0;
int maxX = 0, maxY = 0;
for (int c = 0; c < colunas1; c++) {

						        JCheckBox disciplina = new  JCheckBox(arrayDeDisciplinas[c]);  
						        disciplina.setBounds(y1, x1, 150, 25);  
						        tela.add(disciplina);    tela.repaint();
						        y1 = y1 + 150;  
						       if(c==4 || c==9 || c==14 || c==19)
						       {
						    	    x1 = x1 + 250;
						    	    y1=0;
						       }
						          
						        ArrayList<Integer> modulos = mapaDisciplina.get(arrayDeModulos[c]);  
						        int linhas = modulos.size();  //null
						        matrizModulo[c] = new JCheckBox[linhas];  
						        for (int l = 0; l < linhas; l++) {  
						            matrizModulo[c][l] = new JCheckBox(modulos.get(l)+"");   
						            matrizModulo[c][l].setBounds(x1, y1, 150, 25);  
						            tela.add(matrizModulo[c][l]);    tela.repaint();
						            y1 = y1 + 25;  
						  
						            maxY = Math.max(maxY, y1);  
						        }  
						        x1 = x1 + 150;  
						  
						        maxX = Math.max(maxX, x1);  
						    }  
						   [/code]

muito obrigada pela ajuda
:slight_smile:

[quote=paty_trind]oooi ChronosSage!!!
olha so consegui arrumar em partes a tela tipo eu consigo editar as disciplinas direitinho na tela mas quando eu tento inserir os modulos da nullpointerexception nesta linha int linhas = modulos.size(); //null
e neste momento meu codigo ta assim[code] int colunas1 = arrayDeDisciplinas.length;
JCheckBox[][] matrizModulo = new JCheckBox[colunas1][0];
int x1 = 0,y1 = 0;
int maxX = 0, maxY = 0;
for (int c = 0; c < colunas1; c++) {

						        JCheckBox disciplina = new  JCheckBox(arrayDeDisciplinas[c]);  
						        disciplina.setBounds(y1, x1, 150, 25);  
						        tela.add(disciplina);    tela.repaint();
						        y1 = y1 + 150;  
						       if(c==4 || c==9 || c==14 || c==19)
						       {
						    	    x1 = x1 + 250;
						    	    y1=0;
						       }
						          
						        ArrayList<Integer> modulos = mapaDisciplina.get(arrayDeModulos[c]);  
						        int linhas = modulos.size();  //null
						        matrizModulo[c] = new JCheckBox[linhas];  
						        for (int l = 0; l < linhas; l++) {  
						            matrizModulo[c][l] = new JCheckBox(modulos.get(l)+"");   
						            matrizModulo[c][l].setBounds(x1, y1, 150, 25);  
						            tela.add(matrizModulo[c][l]);    tela.repaint();
						            y1 = y1 + 25;  
						  
						            maxY = Math.max(maxY, y1);  
						        }  
						        x1 = x1 + 150;  
						  
						        maxX = Math.max(maxX, x1);  
						    }  
						   [/code]

muito obrigada pela ajuda
:)[/quote]

na linha 17

trocar por

oi
olha so fiz troca mas agora ta dando este erro

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Unknown Source) at java.lang.String.<init>(Unknown Source) ...
que a ponta para a linha matrizModulo[c][l] = new JCheckBox(listaDeModulos.get(l)+"");
bah eu tava pesquisando sobre este erro mas não sei como resolver eu li este topico http://www.guj.com.br/java/43775-javalangoutofmemoryerror-java-heap-space que diz mais ou menos como resolver o problema mas tipo isso é o problema no programa ou na classe especifica?
muito obrigada :smiley:

olha so modifiquei a parte dos modulos e meu codigo ficou assim:[code]int colunas11 = arrayDeDisciplinas.length;
int x11 = 0,y11 = 60;
for (int c = 0; c < colunas11; c++) {

						        JCheckBox modulo = new  JCheckBox("*"+arrayDeModulos[c]);  
						        modulo.setBounds(y11, x11, 150, 25);  
						        tela.add(modulo);    tela.repaint();
						        y11 = y11 + 150;  System.out.println("bah "+modulo.getText());
						       if(c==4 || c==9 || c==14 || c==19)
						       {
						    	    x11 = x11 + 250;
						    	    y11=0;
						       }
						          
						      
						    } [/code]

a unica coisa que falta é adicionar os itens na tela pq no print System.out.println("bah "+modulo.getText());
aparecem todos os modulos no console mas cmo add na tela pq nao ta dando?
obrigada pela ajuda
:slight_smile:

[quote=paty_trind]olha so modifiquei a parte dos modulos e meu codigo ficou assim:[code]int colunas11 = arrayDeDisciplinas.length;
int x11 = 0,y11 = 60;
for (int c = 0; c < colunas11; c++) {

						        JCheckBox modulo = new  JCheckBox("*"+arrayDeModulos[c]);  
						        modulo.setBounds(y11, x11, 150, 25);  
						        tela.add(modulo);    tela.repaint();
						        y11 = y11 + 150;  System.out.println("bah "+modulo.getText());
						       if(c==4 || c==9 || c==14 || c==19)
						       {
						    	    x11 = x11 + 250;
						    	    y11=0;
						       }
						          
						      
						    } [/code]

a unica coisa que falta é adicionar os itens na tela pq no print System.out.println("bah "+modulo.getText());
aparecem todos os modulos no console mas cmo add na tela pq nao ta dando?
obrigada pela ajuda
:)[/quote]
pode ser varias coisas:
-se ‘tela’ é do ‘JFrame’ entao
onde ta tela, mude para 'tela.getContentPane()'
se a mudança n adiantou verifique se setou o layout null, ‘tela.getContentPane().setLayout(null)’

-se ‘tela’ é do tipo ‘JPanel’ ou ‘Container’ entao
verifique se setou o layout null, ‘tela.setLayout(null)’

-remova ‘tela.repaint’, n precisa ou use somente uma vez, quando todos os componentes ja estiverem sido inseridos

se n resolveu, poste o codigo da tela novamente

ooi ChronosSage,
olha so fiz estas mudanças e os modulos ainda não aparecem na tela so as disciplinas .
Dai ocorre o erro java.lang.ArrayIndexOutOfBoundsException: 6 at TelaDeEscolhaModulos.<init>(TelaDeEscolhaModulos.java:182) at Cadastro$5.actionPerformed(Cadastro.java:540) at javax.swing.JComboBox.fireActionEvent(Unknown Source) ....
que aponta para esta linha JCheckBox modulo = new JCheckBox("*"+arrayDeModulos[c]);
meu codigo ta assim

[code] String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);

							//para pegar a lista de modulos da disciplina arrayDeDisciplinas[0]  
							  
							ArrayList<Integer> listaDeModulos = mapaDisciplina.get(arrayDeDisciplinas[0]);  
							//Converter para array  
							Integer[] arrayDeModulos = listaDeModulos.toArray(new Integer[0]);  
							  
						    int colunas1 = arrayDeDisciplinas.length;  
						    int x1 = 0,y1 = 0;    
						    for (int c = 0; c < colunas1; c++) {  
						      
						        JCheckBox disciplina = new  JCheckBox(arrayDeDisciplinas[c]);  
						        disciplina.setBounds(y1, x1, 150, 25);  
						        getContentPane().add(disciplina);    // getContentPane().repaint();
						        y1 = y1 + 150;  
						       if(c==4 || c==9 || c==14 || c==19)
						       {
						    	    x1 = x1 + 250;
						    	    y1=0;
						       }
						          
						      
						    } 
						    int colunas11 = arrayDeDisciplinas.length;  
						    int x11 = 0,y11 = 60;    
						    for (int c = 0; c < colunas11; c++) {  
						      
						        JCheckBox modulo = new  JCheckBox("*"+arrayDeModulos[c]);  
						        modulo.setBounds(y11, x11, 150, 25);  
						       getContentPane().add(modulo);     //getContentPane().repaint();
						        y11 = y11 + 150;  System.out.println("bah "+modulo.getText());
						       if(c==4 || c==9 || c==14 || c==19)
						       {
						    	    x11 = x11 + 250;
						    	    y11=0;
						       }
						          
						      
						    } 
						   
						    getContentPane().repaint();[/code]

muit :lol:
:lol: brigada
pela ajuda

na linha 25 onde ta

é array de modulos