ola,
tenho uma tela em que uso uma matriz de objetos para criar checkboxes,buttons.Há um botão para cada checkbox cada checkbox é uma disciplina cadastrada no banco eu gostaria de saber como eu faço para que cada botão gere uma tela com os modulos da disciplina do checkbox q esta ao seu lado,tipo eu tentei usar um for para percorrer os check e os botoes mas não de u scerto pois ele pega o primeiro check e os modulos da ultima disciplina armazenada na matriz!!
Alguém pode me ajudar a arrumar meu codigo ou criar um novo?obg
meu codigo é este [code]
//criação das variaveis no inicio da classe
JComboBox cb = new JComboBox();
String v[]=new String[13];
Object ck[][] = new Object[v.length][v.length];
String ret[]=new String[ck.length];
String r[]=new String[ret.length];
//ação da combobox
comboBox.addActionListener (new ActionListener (){
public void actionPerformed(ActionEvent e)
{
try{
pt.setBounds(20, 510, 750, 125);
pt.setLayout(new FlowLayout());
int c=0;
if(comboBox.getSelectedItem().equals("Ensino Medio"))
{
pt.removeAll();
c=1;
resultado = comando.executeQuery("select nome from disciplina where ensino='"+c+"'order by nome");
int q=0;
while (resultado.next())
{
v[q]=resultado.getObject(1).toString();
q++;
}
for(int i=0;i<ck.length;i++)
{
if(v[i]!=null)
{
ck[i][0]=new JCheckBox(v[i]);
ck[i][1]=new JButton();
ck[i][2]=v[i];
((Component) ck[i][0]).setBounds(x, y1, 150, 25);
((Component) ck[i][1]).setBounds(x+160, y1, 10, 10);
((AbstractButton) ck[i][0]).setSelected(true);((AbstractButton) ck[i][1]).setSelected(true);
pt.add((Component) ck[i][0]);pt.add((Component) ck[i][1]);
x+=180;
if(i==4 || i==9)
{
x=20;
y1+=30;
pt.revalidate();
pt.repaint();
painel.add(pt);
tela.repaint();
}
}
//aki q eu tentei fazer as gambiarras
if(ck[i][1]!=null)
{
((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){
public void actionPerformed(ActionEvent e)
{
for(int i=0;i<ck.length;i++)
{
if(ck[i][0]!=null && ck[i][1]!=null && ck[i][2]!=null)
{
if(((AbstractButton) ck[i][0]).isSelected())
{
//concatenando os resultados e depois separando num metodo q uso um arraylist
ret[i]=(String) ck[i][2];
if(i==0)
tudo=ck[i][2]+txt;
else
tudo+=ck[i][2]+txt;
}
}
}
getRet();
}});
}
}
painel.revalidate();
painel.repaint();
tela.repaint();
}
//metodoq separa os itens concatenados
public String getRet()
{
StringTokenizer kp=new StringTokenizer(tudo,txt);
Listtx=new ArrayList();
int pos=0;
while(kp.hasMoreTokens())
{
tx.add(kp.nextToken());
//System.out.println("testando o stgtkr "+tx);
//System.out.println("elemento da pos “+pos+” é "+tx.get(pos));
pos++;
}
for(int i=0;i<ck.length;i++)
{ if(ck[i][1]!=null)
{
((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){ //inclui o aluno na turma q n estiver cheia
public void actionPerformed(ActionEvent e)//so exibe as turmas q ainda podem inserir alunos
{
System.out.println("dentro da acao do botao");
for(int i=0;i<ck.length;i++)
if(((AbstractButton) ck[i][1])==e.getSource())
System.out.println("antes de chamar o metodo q cria tela d mode");
crianovatela();//erro so seleciona artes ele n muda o i
}});
System.out.println("o elem selecionado "+tx.get(i));
return tx.get(i);
}
}
return "problema";
}
//metodo q cria as telas com os modulos e usa o resultado do metodo acima
public void crianovatela()
{
JFrame telinha=new JFrame(“Tela de modulos”);
try {
conexao = conecta.conectabanco();
comando = conexao.createStatement();
}
catch(Exception x) {
JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
}
try{
//funciona mas agora pega a ultima posição=[
btn1.setBounds(20, 180, 50, 15);
String k=null;
for(int i=0;i<ret.length;i++)
{
getRet();
System.out.println("o valor de getret() "+getRet());
if(ret[i]!=null )
{
k=ret[i];
System.out.println("valor da var ret[i] "+ret[i]+" valor d k "+k+" select modulo from disc_modulo where Id_disciplina='"+k+"'order by modulo");//ta pegando a ultima pos
// if(ret[i].equalsIgnoreCase(ck[i][0].toString()))//c ret[i] for igual ao ck selecionado
resultado = comando.executeQuery("select distinct modulo from disc_modulo where Id_disciplina='"+k+"'order by modulo");
int q=0;
while (resultado.next())
{
k1[q]=resultado.getObject(1).toString();
System.out.println("o resultado da pesquisa no banco "+k1[q]+" na pos "+q);
q++;
}
if(k!=null)
{
pan=new JPanel();
pan.setBounds(20,20, 350, 150);
pan.setBackground(Color.cyan);
for(int i1=0;i1<j.length;i1++)
{
if(k1[i1]!=null)
{
j[i1]=new JCheckBox(k1[i1]);
j[i1].setBounds(x1, y11, 150, 25);
j[i1].setSelected(true);
pan.add(j[i1]);
y11+=30;
if(i1==3 || i1==8)
{
x1=20;
y11+=30;
pan.repaint();
}
}
}
}
}
}
[/code]
obrigada pela ajuda