ola,
tenho q pegar os campos de uma classe para utilizar em outra num armazenamento de dados no banco,em uma classe eu tenho o texto do joptionpane q qro salvar onde a disciplina,modulo sao os itens selecionados na combo de outra classe…pensei em fazer algo mais ou menos assim criar um obj da classe q tm as combo pra poder usa-las na classe onde esta sendo criado meu joptionpane o codigo é o seguinte [code]public void botaoDireito()
{
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
String k=JOptionPane.showInputDialog("");
try {
System.out.println(“dentro do metodo do joptionpane”);
Object let;
Object lt;
System.out.println(tn.comboBox.getSelectedItem()+" “+tn.comboBox2.getSelectedItem());
if(tn.comboBox.getSelectedItem() != null && tn.comboBox2.getSelectedItem() != null)
{
let=tn.comboBox.getSelectedItem();lt=tn.comboBox2.getSelectedItem();
System.out.println(“UPDATE nota SET observacao =’”+k+”’’"+"’ WHERE rc_aluno=’"+tn.t0.getText()+"’ and disciplina=’"+let+"’ and modulo=’"+lt+"’");
comando.executeUpdate(“UPDATE nota SET observacao =’”+k+"’’"+"’ WHERE rc_aluno=’"+tn.t0.getText()+"’ and disciplina=’"+let+"’ and modulo=’"+lt+"’");
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
[/code]
dai este método botaodireito() é chamado no construtor desta mesma classe e eu uso um objeto desta classe na combobox
bem meu metodo não esta funcionando os valores deste if if(tn.comboBox.getSelectedItem() != null && tn.comboBox2.getSelectedItem() != null)são null e não executam o resto do codigo…
como eu posso resolver isto?pq os itens ficam null ah tn é o obj da classe q tm as combo
obg
Como você está trabalhando com Swing, o ideal, ao tentar utilizar os valores dos coampos de uma “janela” é passar a própria janela como parâmetro.
Por exemplo, suponha que a tela em questão tem o nome TelaUm e que as combos tem os nomes combo1 e combo2, na classe da tela
//muito codigo aqui
pegaValorOutraClasse(this, /*mais valores*/);
na classe que irá trabalhar os dados
public class pegaValorOutraClasse(TelaUm tel, /*mais valores*/){
this.telaUm = tel;
//mais valores = mais valroes
valorComboUm = telaUm.combo1.getSelectedIndex().toString();
valorComboDois = telaUm.combo2.getSelectedIndex().toString();
}
Algo mais ou menos assim
humm
vou tentar fazer deste jeito e qualquer coisa eu posto 
mto obg
não ta dando mto certo tipo da varios erros de sintaxe qnd eu tnto fazer a classe receber os itens q qro usar da outra classe mas acusa varios erros de sintaxe e se crio um obj da outra classe para usar estes itens eles aparecem null
:roll: cmo posso resolver isto?
meu codigo é este aki [code]public void botaoDireito()
{
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
String k=JOptionPane.showInputDialog("");
try {
System.out.println(“dentro do metodo do joptionpane”);
Object let;
Object lt;
System.out.println(tn.comboBox.getSelectedItem()+" “+tn.comboBox2.getSelectedItem());
if(tn.comboBox.getSelectedItem() != null && tn.comboBox2.getSelectedItem() != null)
{
let=tn.comboBox.getSelectedItem();lt=tn.comboBox2.getSelectedItem();
System.out.println(“UPDATE nota SET observacao =’”+k+”’’"+"’ WHERE rc_aluno=’"+tn.t0.getText()+"’ and disciplina=’"+let+"’ and modulo=’"+lt+"’");
comando.executeUpdate(“UPDATE nota SET observacao =’”+k+"’’"+"’ WHERE rc_aluno=’"+tn.t0.getText()+"’ and disciplina=’"+let+"’ and modulo=’"+lt+"’");
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
[/code]
Sendo tn o objeto da outra classe q eu criei para usar as combos
obg
O retorno null é pelo fato de que, mesmo instancioando o objeto da outra classo, elas não possuem qualquer valor.
Para facilitar, você pode criar métodos getter e setter para os valores das combos da classe TN.
public String getComboValue(){
return combobox1.getSelectedItem().toSring();
}
Aí, você pode criar um construtor nesta classe que passou o código em que um dos parâmetros seja a própria TN, como eu havia dito.
Então, na classe que chama
String var = tn.etComboValue();
Fica mais fácil assim
vou tentar desta forma e qualquer coisa eu posto e bah mto obg pela ajuda:)
bah fiz da maneira q tu disseste mas não deu mto certoo :oops: tipo no metodo get para pegar o retorno da combo eu fiz assim public String getComboValue1(){
return comboBox.getSelectedItem().toString();
}
da nullpointerexception na linha do return
o q eu fiz errado,tipo eu fiz do jeito q tu me explicou mas nao deu certo cmig :roll:
obg
De que forma os valores da combo são selecionados? O usuário é que seleciona?
sim o usuario seleciona,pq?
É que caso não haja seleção de um valro na combo, este método getSelectedItem() retorna o valor nulo.
hmm
mas nesta tela eu seleciono os itens e depois chamo este metodo q usa elas mas sera q ele esta sendo carregado qnd eu abro a tela?pq c for vai retornar null mesmo :shock: bah!
Posta o trecho de código onde você passa a classe que contém os combos para a classe de processamento
este é o metodo na classe que tem as combos
[code]public String getComboValue1(){
return comboBox.getSelectedItem().toString();
}
public String getComboValue(){
return comboBox2.getSelectedItem().toString();
}
[/code]
e este é o trecho que eu estou tentando usar o valor das combo na outra classe
tn=new TelaDeInsercaoDeNotas();
System.out.println("dentro do metodo do joptionpane");
Object let;
Object lt;
//System.out.println(tn.comboBox.getSelectedItem()+"cmbos normal"+tn.comboBox2.getSelectedItem());
System.out.println("metodo q pega valores "+ tn.getComboValue1()+" e"+tn.getComboValue());
if(tn. getComboValue1() != null && tn. getComboValue() != null)
{
let=tn. getComboValue1();lt=tn. getComboValue();
System.out.println("UPDATE nota SET observacao ='"+k+"''"+"' WHERE rc_aluno='"+tn.t0.getText()+"' and disciplina='"+let+"' and modulo='"+lt+"'");
comando.executeUpdate("UPDATE nota SET observacao ='"+k+"''"+"' WHERE rc_aluno='"+tn.t0.getText()+"' and disciplina='"+let+"' and modulo='"+lt+"'");
}
Sendo q eu declarei a variavel tn no inicio desta classe
obg
tipo eu coloquei um system e na tela que contem as combos é exibida uma vez o retorno daqueles metodos mas dai depois eu usei o system na outra tela e ocorreu este erro java.lang.NullPointerException
at TelaDeInsercaoDeNotas.getComboValue1(TelaDeInsercaoDeNotas.java:618)
at BotaoModulo$4.mouseReleased(BotaoModulo.java:146)
...
esta linha aponta para o retorno do primeiro get na tela das combo e para linha q contem o system na classe em q qro usar as combo
:roll:
Onde você instancia a classe que contém o segundo código?
tipo onde eu instancio ela na classe das combo?
é neste metodo aki q gera uma qntde d botões cm txt diferentes q deveriam conter um comentario kda um
[code]public void determinaBotao()
{
int x = 20,y = 280;int o=60;//local onde o botao vai fik na tela
int cargaHorariaTotalMode = 0;//recebe o valor da ch que ta armazenado no banco
int resul=0;//qnte d botoes q vao ser criados
String j=null;Object l=null;
String v,v1,v2,v3;
int n,n1,n2,n3;
try {
conexao = conecta.conectabanco();
comando = conexao.createStatement();
}
catch(Exception e1) {
JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
}
try
{
//puxa do banco os valores da ch total do modulo da disciplina escolhida na combo e da c.h d tutoria,platao..
//fazer um for e comparar qual destes itens é menor e usar para dividir pela ch total
Object item=null;
if(comboBox.getSelectedItem()!=null)
item=comboBox.getSelectedItem();
resultado=comando.executeQuery("select ch_total,plantao_cm_professor,plantao_sm_professor,tutoria,falta from cargahoraria where Id_disciplina='"+item+"'");
resultado.next();
j =resultado.getObject(1).toString();
cargaHorariaTotalMode=Integer.parseInt(j);
v =resultado.getObject(2).toString();
n=Integer.parseInt(v);
v1 =resultado.getObject(3).toString();
n1=Integer.parseInt(v1);
v2 =resultado.getObject(4).toString();
n2=Integer.parseInt(v2);
v3 =resultado.getObject(5).toString();
n3=Integer.parseInt(v3);
int menor=n;
if(menor>n1)
menor=n1;
else if(menor>n2)
menor=n2;
else if(menor>n3)
menor=n3;
resul=cargaHorariaTotalMode/menor;
b=new BotaoModulo[resul];
for(int i=0;i<resul;i++)
{
BotaoModulo h=new BotaoModulo();//aki eu crio um objt da classe onde qro usar as combo
b[i]=h;
b[i].setBounds(x, y, o, 25);
x+=o;
if(i==11)
{
y+=30;
x=5; b[i]=h;
b[i].setBounds(x, y, o, 25);
}
else if(i==23)
{
y+=30;
x=5; b[i]=h;
b[i].setBounds(x, y, o, 25);
}
painel.add(h);
repaint();
}
}
catch(Exception e5)
{
JOptionPane.showMessageDialog(null, "Erro ");
e5.printStackTrace();
}
}//metodo[/code]
o construtor dest classe é assim
[code]public BotaoModulo()
{
this.setText(" ");
addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
if(getText().equalsIgnoreCase(" "))
{
setText("T");
}
...
}
});
botaoDireito();//metodo q cria o comentario para cada botão
mudacor();
setBounds(20, 140, 75, 25);
setVisible(true);
}[/code]
era isto?
Crie um outro construtor para a classe BotaoModulo assim
ClasseQueChama classeQueChama;
public BotaoModulo(ClasseQueChama classeQueChama){
this.classeQueChama = classeQueChama;
//restante do código do construtor
}
e na classe que chama
BotaoModulo btn = new BotaoModulo(this);
Isso permite que você manipule os eventos e atributos public da classe que chama
drsmachado
vou fazer deste jeito que tu disseste qualquer coisa eu posto 
obrigada pela ajuda
drsmachado
na tela botao modulo deu tudo certo no construtor ficou assim
TelaDeInsercaoDeNotas tela;
public BotaoModulo(TelaDeInsercaoDeNotas tela)
{
this.tela=tela;
....}
mas na tela em q crio objetos da classe botao da este erro
The constructor BotaoModulo(new ActionListener(){}) is undefined
dai aparece estas 2 opções para resolver o problema
Change constructor BotaoModulo(TelaDeInsercaoDeNotas) to BotaoModulo(ActionListener)
Create a constructor BotaoModulo(ActionListener)
e agora?
Estranho, ele deveria identificar como “this” a própria TelaDeInsercaoDeNotas e não o ActionListener