public String getRet()
{
StringTokenizer kp=new StringTokenizer(tudo,txt);
List<String>tx=new ArrayList<String>();
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 (){ public void actionPerformed(ActionEvent e)//so exibe as {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 hamar 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";
}
Ajuda para encontrar erro!
8 Respostas
Esse bloco de código que você nos colou é muito abstrato.
Por ex: A variável “ck” utilizada no FOR não está sendo instanciada em lugar nenhum dentro desse método.
Você pode nos colar a classe inteira para que possamos fazer os testes ou até mesmo debugar ou também nos colar o erro do console(se o erro existir).
Abraços
Tem alguns objetos que não está sendo instanciados.
Faz como o mews e posta a classe.
segue a classe
...
Connection conexao;
Statement comando;
ResultSet resultado,resultado1;
final String labels[] = { "","Ensino Medio", "Ensino Fundamental"};
final JComboBox comboBox = new JComboBox(labels);
JComboBox cb = new JComboBox();
String v[]=new String[13];
//aqui esta a criação dos itens utilizados naquele metodo
Object ck[][] = new Object[v.length][v.length];
String ret[]=new String[ck.length];
String r[]=new String[ret.length];
int x=20;int y1=510;
Object z=null;
JButton b[]=new JButton[ck.length];
Object btn=null;
int ont=0;String vetor=null,tal=null;
JCheckBox j[]=new JCheckBox[7];
String k1[]=new String[j.length];
int x1=20;int y11=30;
String txt="#";String tudo=null;
public Cadastro()//crio um construtor aluno
{
...
//ação da comobobox
comboBox.addActionListener (new ActionListener (){
public void actionPerformed(ActionEvent e)
{
try {
conexao = conecta.conectabanco();
comando = conexao.createStatement();
}
catch(Exception e1) {
JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
}
try{
int c=0;
if(comboBox.getSelectedItem().equals("Ensino Medio"))
{
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];
//System.out.println("os elementos de ck[i][2] sao "+ck[i][2]);
((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);
add((Component) ck[i][0]);add((Component) ck[i][1]);
x+=180;
requestFocus(true);
if(i==4 || i==9)
{
x=20;
y1+=30;
repaint();
}
}
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())
{
//System.out.println("dentro do if q ve c ta selecionado o isselected é "+((AbstractButton) ck[i][0]).isSelected());
ret[i]=(String) ck[i][2];
if(i==0)
tudo=ck[i][2]+txt;
else
tudo+=ck[i][2]+txt;
// System.out.println(" ret "+ret[i]+" txt da check selecionada "+((AbstractButton) ck[i][0]).getText()+"valor da coluna 3 "+ck[i][2]);
// tal=getRet();
// System.out.println("getRet "+getRet()+" tal "+tal);
}
}
}
getRet();
//crianovatela();
}});
}
}
repaint();
}
if(comboBox.getSelectedItem().equals("Ensino Fundamental"))
{
c=2;
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);
add((Component) ck[i][0]);add((Component) ck[i][1]);
x+=180;
requestFocus(true);
if(i==4 || i==9)
{
x=20;
y1+=30;
repaint();
}
}
if(ck[i][1]!=null)
{
((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){
public void actionPerformed(ActionEvent e)
{
//System.out.println("antes do for dentro do botao");
for(int i=0;i<ck.length;i++)
{
if(ck[i][0]!=null && ck[i][1]!=null)
{
if(((AbstractButton) ck[i][0]).isSelected())
{
//System.out.println("dentro do if q ve c ta selecionado o isselected é "+((AbstractButton) ck[i][0]).isSelected());
ret[i]=(String) ck[i][2];
if(i==0)
tudo=ck[i][2]+txt;
else
tudo+=ck[i][2]+txt;
//System.out.println(" ret "+ret[i]+" txt da check selecionada "+((AbstractButton) ck[i][0]).getText()+"3 coluna "+ck[i][2]);
//tal=getRet();
//System.out.println("getRet "+getRet()+" tal "+tal);
}
}
}
getRet();
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
}});
}
//crianovatela();
}});
}
}
repaint();
}
}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null, "Erro ");
e1.printStackTrace();
}
}});
setClosable(true);
setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
setIconifiable(true);
setMaximizable(true);
setResizable(true);
setSize (1000,600);
setVisible (true);
}
//ação que é executa no botao
JButton btn1=new JButton("ok");
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{
btn1.setBounds(20, 180, 50, 15);
System.out.println("dentro do construtor da classe modulos");
System.out.println("antes do 1 if do construtor da classe modulos o valor de getret é "+getRet());
if(getRet()!=null)
{
vetor=getRet();String er=null;
System.out.println("antes de fazer a busca no banco o valor de s é "+vetor);
for(int i=0;i<ret.length;i++)
if(ret[i]!=null)
er=ret[i];//tipo c eu fizer deste jeito vai dar arrayindxoutb...pq eu to pegando os modulos de tdas as disciplinas
System.out.println("valor da var er "+er+" select modulo from disc_modulo where Id_disciplina='"+vetor+"'order by modulo");//ta pegando a ultima pos
resultado = comando.executeQuery("select modulo from disc_modulo where Id_disciplina='"+vetor+"'order by modulo");
int q=0;
System.out.println("valor de ret[i] "+er);
while (resultado.next())
{
k1[q]=resultado.getObject(1).toString();
/// System.out.println("o resultado da pesquisa no banco "+k1[q]+" na pos "+q);
q++;
}
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);
telinha.add(j[i1]);
y11+=30;
if(i1==3 || i1==8)
{
x1=20;
y11+=30;
telinha.repaint();
}
}
}
}
btn1.addActionListener (new ActionListener (){
public void actionPerformed(ActionEvent e)
{
try{
//se o ck d modulo estiver selecionado eu insiro no banco
resultado = comando.executeQuery("select Id from aluno where nome='"+t0.getText()+"' and data_nascimento='"+t1.getText()+"'");
resultado.next();
System.out.println(resultado.getObject(1).toString());
z=resultado.getObject(1).toString();
if(z!=null)
for(int i=0;i<j.length;i++)
if(j[i]!=null)
if(j[i].isSelected())//
for(int i1=0;i1<ret.length;i1++)
comando.executeUpdate("insert into disciplina_modulo_aluno (modulo,disciplina,rc_aluno) values ('" + j[i].getText() + "','" + ret[i1] + "','" + z + "')" );
JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");
}
catch(Exception ji)
{
ji.printStackTrace();
}
}});
}
catch(Exception exce)
{
exce.printStackTrace();
}
telinha.setLayout(null);
telinha.add(btn1);
telinha.setSize(300,250);
telinha.setVisible(true);
telinha.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
telinha.setResizable(true);
}
}
obrigada
=]
Tem Como você enviar a exceção ?
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);
}
Estou sem muito tempo para olhar o seu código a fundo, mas pelo que eu posso ver estão faltando abrir e fechar {}
Dê uma olhada na minha sugestão((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){ //inclui o aluno na turma q n estiver cheia
public void actionPerformed(ActionEvent e)
{
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
}
}
}});
ok vou tentar
qualquer coisa eu posto de novo!
é que não esta executando nenhum erro e não cai em em nenhuma exceção,mas esta errado porque quando eu testo o metodo getret() ele sempre exibe os modulos referentes a artes,que é o primeiro elemento da matriz da coluna zero,tipo o for que tem neste metodo trava no primeiro eu acho que é por causa do returnNão sei se entendi bem o problema mas entendo que você quer acumular todos os itens do array q não forem nulos para utilizar em algum outro lugar, certo? Se é isso o que entendi, passe a utilizar um list e adicione os itens nele (na linha onde hoje está o return) e ao fim do loop, retorne a lista.por que ele ta denro do if e assim q acha o primeiro item q não é null retorna e para a execução do metodo so que tu sabe alguma maneira que eu possa fazer para retornar os outros elementos da matriz ou que eu possa chamar aquele metodo varias vezes? obg =]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); }
Outra coisa, você está utilizando StringTokenizer :?: É realmente necessário ou você pode trocar pelo método split() da classe String?