ola,
tenho um vetor de botões de uma classe e cada um desses botões tem um evento que abre um joptionpane.Na tela em que utilizo estes itens eu consigo salvar o texto de cada botão pegando os mesmos com o metodo getText() mas minha dificuldade esta em pegar o texto dos comentarios de cada botão:(
como posso salvar o texto de cada joptionpane e salvar junto com os textos dos botões?
muito obrigada pela ajuda

Salvar texto do joptionpane[resolvido]
39 Respostas
eu nao entendi o que vc ta tentando fazer 
eu nao testei, mas deve ser isso -.-
eu nao testei, mas deve ser isso -.-
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
{
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];
//aqui eu to criando os objetos da classe botao :p
for(int i=0;i<resul;i++)
{
BotaoModulo h=new BotaoModulo();
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();
}
}
seuObjeto.getComponents();
depois vc vai ter que fazer um for to do e fazer um cast
vai ser complicadinho.
Component[] componentes = painel.getComponents();
String classe;
for (int contador = 0; contador < componentes.length; contador++) {
classe = componentes[contador].getClass().getName();
try {
if (classe.contains("JButton")) {
((JButton) componentes[contador]).getText(); // verificar se para pegar o nome do botao é getText() mesmo
}
} catch (Exception e) {
//tratamento de exception
}
}
((JButton) componentes[contador]).getText();
nesta parte vc vai ter que jogar o valor do conteudo em uma lista, mas isso eu deixo pra vc pq já te expliquei como fazer em um post anterior
vai ser uma coisa do genero :roll:
bah :shock: :shock: :shock: !!!
tah calma ai vamos por partes levando em conta que meu objeto esta sendo criado num vetor eu deveria fazer algo mais ou menos assim for(int i=0;i<resul;i++)
b[i].getComponents();
....
ah ja é a segunda vez que tu fala sobre o for to do qual é a diferença dele para um for normal?
mtoo obg 
for to do = C hahahahaah força do habito é um for normal.
passa para ele o objeto (jpanel, joptionpane) aonde os botoes estao adicionados
outra solução pode ser que funcione é esta
//declare uma lista
for(int i=0;i<b.size() ;i++) // procure uma forma de retornar o numero de objetos dentro do vetor
lista.add(i, ((JButton) componentes[contador]).getText() );
}
hmm
:oops: for normal ah tah
:oops: :oops: :oops: :oops:
pera ai to tentando arrumar na minha classe
vou ir modificando aqui uns itens e depois posto!
obrigada pela ajuda e explicações

for(int i=0;i<resul;i++)
{
b[i].getComponents();
}
Component[] componentes = tela.getComponents();
String classe; ArrayList<Object>lista=new ArrayList<Object>();
for (int contador = 0; contador < componentes.length; contador++) {
classe = componentes[contador].getClass().getName();
try {
if (classe.contains("JButton")) {
((JButton) componentes[contador]).getText();
}
for(int i=0;i<b.length ;i++)
lista.add(i, ((JButton) componentes[contador]).getText() );
}
catch (Exception e) {
System.out.println("erro :"+e);
}
}
vc está tentando modificar o codigo sem entender ele
for(int i=0;i<resul;i++)
outra coisa, os botoes estão em um JPanel ou em um JOptionPane?
se for em um JPanel é so usar este codigo
Component[] componentes = SEUPAINEL.getComponents();
# String classe; ArrayList<Object>lista=new ArrayList<Object>();
# for (int contador = 0; contador < componentes.length; contador++) {
# classe = componentes[contador].getClass().getName();
# try {
# if (classe.contains("JButton")) {
# lista.add(i, ((JButton) componentes[contador]).getText());
System.out.println(lista.get(i));
# }
# catch (Exception e) {
# System.out.println("erro :"+e);
# }
#
# }
e se for um container apenas?
:oops: :oops: :oops:
sei tem muitas coisas que preciso aprender em relação a programação

obg pela ajuda
é um painel?
vc adicionou os botoes em um painel??
para voce usar aquele for vc teria que ter um controlador, do jeito que vc fez ta criando um loop infinito
eu add os botões direto na tela

eu fiz um system na variavel classe e no console apareceu classe javax.swing.JScrollPane
:shock:
ah e mais uma coisa ele não entra no if if (classe.contains("JButton")) { ...}
obg pela ajuda
por tentar resolver meus problemas
hehe
faz assim
cria um metodo:
public JList getNome(JPanel painel){ // no painel vc passa o painel que contem os botoes
// use o codigo que mostrei acima
return lista;
}
oi
bah ainda nao consegui resolver este problema 
posta o codigo
Component[] componentes = tela.getComponents();
String classe; ArrayList<Object>lista=new ArrayList<Object>();
for (int contador = 0; contador < componentes.length; contador++) {
classe = componentes[contador].getClass().getName();
System.out.println("classe "+classe);
try {
if (classe.contains("JButton")) {
for(int i=0;i<b.length ;i++) // procure uma forma de retornar o numero de objetos dentro do vetor
{ lista.add(i, ((JButton) componentes[contador]).getText() );
lista.add(i, ((JButton) componentes[contador]).getText());
System.out.println(lista.get(i) +"*"+i); }
System.out.println("no if");
}
else
{
System.out.println("bah!");
}
}
catch (Exception e) {
System.out.println("erro :"+e);
}
}
classe javax.swing.JScrollPane
bah!
ação do botão direito...
public ArrayList<Object> getNome(JPanel painel){ // no painel vc passa o painel que contem os botoes
painel=pan;//faço o painel recebe o painel q add os botoes na tela
Component[] componentes = tela.getComponents();
String classe;
ArrayList<Object>lista=new ArrayList<Object>();
for (int contador = 0; contador < componentes.length; contador++) {
classe = componentes[contador].getClass().getName();
System.out.println("classe "+classe);
try {
if (classe.contains("JButton")) {
for(int i=0;i<b.length ;i++) // procure uma forma de retornar o numero de objetos dentro do vetor
{ lista.add(i, ((JButton) componentes[contador]).getText() );
lista.add(i, ((JButton) componentes[contador]).getText());
System.out.println(lista.get(i) +"*"+i); }
System.out.println("no if");
}
else
{
System.out.println("bah!");
}
}
catch (Exception e) {
System.out.println("erro :"+e);
}
}
return lista;
}
classe javax.swing.JScrollPane
bah!
nada contra este codigo
para ficar mais bonito nesta parte
coloca assim
o erro provavelmente está aqui
de onde veio tela?
troque pelo painel que vem por parametro no getNome
provavelmente vc fez assim
JPanel tela = new JPanel();
e ai que esta a pergunta.
por que não entra no if ??
a resposta é simples, vc nao tem nem um botão no tela para entrar no if
public ArrayList<Object> getNome(JPanel painel){ // no painel vc passa o painel que contem os botoes
this.pan=painel;//faço o painel recebe o painel q add os botoes na tela
Component[] componentes = pan.getComponents();
String classe;
ArrayList<Object>lista=new ArrayList<Object>();
for (int contador = 0; contador < componentes.length; contador++) {
classe = componentes[contador].getClass().getName();
System.out.println("classe "+classe);
try {
if (classe.contains("JButton")) {
for(int i=0;i<b.length ;i++) // procure uma forma de retornar o numero de objetos dentro do vetor
{ lista.add(i, ((JButton) componentes[contador]).getText() );
lista.add(i, ((JButton) componentes[contador]).getText());
System.out.println(lista.get(i) +"*"+i); }
System.out.println("no if");
}
else
{
System.out.println("bah!");
}
}
catch (Exception e) {
System.out.println("erro :"+e);
}
}
return lista;
}
classe BotaoModulo
bah!
classe BotaoModulo
bah!
classe BotaoModulo
bah!
classe BotaoModulo
bah!
classe BotaoModulo
bah!
classe BotaoModulo
bah!
classe BotaoModulo
bah!
uma pergunta
vc está usando o JButton da propria JDK
ou vc fez um botão personalizado herdando do JButton??
troque seu codigo por este
# public ArrayList<Object> getNome(JPanel painel){ // no painel vc passa o painel que contem os botoes
#
# this.pan=painel;//faço o painel recebe o painel q add os botoes na tela
# Component[] componentes = pan.getComponents();
# String classe;
# ArrayList<Object>lista=new ArrayList<Object>();
# for (int contador = 0; contador < componentes.length; contador++) {
# classe = componentes[contador].getClass().getName();
# System.out.println("classe "+classe);
# try {
# if (classe.contains("JButton")) {
# System.out.println("Jbutton da JDK");
# }
# if (classe.contains("BotaoModulo")) {
# System.out.println("Jbutton personalizado");
# }
else{
System.out.println("nem um jbutton encontrado");
# }
#
# }
# catch (Exception e) {
# System.out.println("erro :"+e);
# }
#
# }
# return lista;
#
# }
para algum desavisado que venha a ler este topico e usar o codigo por favor tire o # porque com eles o codigo nao funcionará, eu to com preguiça de tirar
eu fiz uma classe que cria botões personalizados e que herda do JButton
ah troquei o codigo e tipo agora no console so aparece
classe BotaoModulo
Jbutton personalizado
classe BotaoModulo
Jbutton personalizado
classe BotaoModulo
Jbutton personalizado
classe BotaoModulo
Jbutton personalizado
classe BotaoModulo
Jbutton personalizado
classe BotaoModulo
Jbutton personalizado
classe BotaoModulo
Jbutton personalizado
dai fiz o seguinte
if (classe.contains("BotaoModulo")) {
System.out.println("Jbutton personalizado");
for(int i=0;i<b.length ;i++) // procure uma forma de retornar o numero de objetos dentro do vetor
{ lista.add(i, ((JButton) componentes[contador]).getText() );
lista.add(i, ((JButton) componentes[contador]).getText());
System.out.println(lista.get(i) +"*"+i); }
}
e o console ficou assim
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
classe BotaoModulo
Jbutton personalizado
*0
*1
*2
*3
*4
*5
*6
ja ta melhor um pouco neh 
kkkkkkkkkkkkkkkkkk
era essa resposta que eu queria
vc entendeu pq nunca entro no IF ne??
preciso comentar mais alguma coisa ou vc da conta sozinha?
se vc parar para pensar já respondi todas as suas questoes referente a este problema com meu exemplo acima, agora so falta vc pensar um pouco e fazer o que vc quer
public void botaoDireito()
{
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
message=JOptionPane.showInputDialog("");
try {
System.out.println("ação do botão direito... valor de message é "+message);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
public String getMessage()
{
System.out.println("valor de message dentro do getmessage() "+message);
return message;
}
if (classe.contains("BotaoModulo")) {
System.out.println("Jbutton personalizado");
for(int i=0;i<b.length ;i++) // procure uma forma de retornar o numero de objetos dentro do vetor
{ lista.add(i, ((JButton) componentes[contador]).getText() );
lista.add(i, ((JButton) componentes[contador]).getText());
System.out.println(lista.get(i) +"*"+i);
String texto=b[i].getMessage();
System.out.println("valor de texto "+texto);
}
}
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
classe BotaoModulo
Jbutton personalizado
*0
valor de message dentro do getmessage() null
valor de texto null
*1
valor de message dentro do getmessage() null
valor de texto null
*2
valor de message dentro do getmessage() null
valor de texto null
*3
valor de message dentro do getmessage() null
valor de texto null
*4
valor de message dentro do getmessage() null
valor de texto null
*5
valor de message dentro do getmessage() null
valor de texto null
*6
valor de message dentro do getmessage() null
valor de texto null
ação do botão direito... valor de message é comentario
to esquecendo algo?
kkcmo sempre
?
:lol: bg pela ajuda
se vc parar para pensar já respondi todas as suas questoes referente a este problema com meu exemplo acima, agora so falta vc pensar um pouco e fazer o que vc quer
eu sei q qro pegar o comentario :P agora cmo é diferente :P :P
presta mais atenção no seu codigo
isso funcionaria?
aiin so mtoo desatenta mesmo!!!
mas tipo se eu fizerString texto=((Throwable) lista.get(i)).getMessage();
vai dar este errojava.lang.ClassCastException pq nao da para faer um cast
:?:
ta tipo eu entendi q eu uso os botoes q estao na lista(lista.add(i, ((JButton) componentes[contador]).getText()); ) para pegar os comentarios
é isso neh? :oops:

ah e tentei tb String texto=((BotaoModulo) componentes[contador]).getMessage();
mas o comentario do botao continua null 
tenta isso
acessa o metodo getText do Jbutton da superclasse
hmm
so q olha so eu acho q eu nao entendi tipo isso
tenta isso
lista.add(i, ((BotaoModulo)componentes[contador]).getText() );acessa o metodo getText do Jbutton da superclasse
tipo eu tenho q pegar o comentario de cada botão dai é q complica pq tipo o metodo q gera o comentario ta na classe de botao personalizado enquanto os botoes vao ser criados mesmo na outra classe 
ai tava pensando nao seria mais facil eu gerar na classe q os botoes vao ser criados um metodo para criar comentario para cada botão?
ou fica pior? :oops:
mto obg pela ajuda
o comentario é oque exatamente?
a string nome do botão ou um ToolTipText ?
realmente nao entendi oq vc quer fazer com aquele codigo dentro da classe do seu botao
tah minhas perguntas são sempre bem confusas
o que eu quero fazer é pegar o texto do comentario de cada botao (tipo daqueles que tiverem algo escrito hehe)
so que na classe do meu botao personalizado eu tnho o metodo que cria os comentarios.
Dai la na outra classe onde eu crio um vetor de objetos da classe botao personalizado eu qria pegar o texto destes comentarios para que quando eu for salvar o nome das disciplinas,modulos,atividades(texto dos botoes) e os comentarios eu salvasse o comentario de cada um dai quando eu buscar os mesmos em outra tela apareceria tudo sabe nos campos certinhos se eu fosse exibir numa jtable por exemplo.
Conseguiu entender é que eu não sei explicar direito 
:lol: bg pela ajuda
vc vai ter que fazer um get na classe onde eu crio um vetor de objetos da classe botao personalizado.
e la fazer o tratamento, por que desse jeito que vc ta falando eu nao consigo entender nada.
acho que vc ta pegando o caminho mais dificil
já ouviu falar em JTable?
e la fazer o tratamento, por que desse jeito que vc ta falando eu nao consigo entender nada.acho que vc ta pegando o caminho mais dificil
já ouviu falar em JTable?
:twisted: grrrr
kkkk
trocar isso td por jtable?
tah nao entendi tipo a visualização vai ser atraves de uam jtable provavelmente
na verdade o que eu quero é poder exibir os comentarios relativos a cada botão(texto do botão no caso) tipo se tu tiver outra sugestão de como eu posso fazer isso eu aceito e ah tu gosta de trabalhar com jtables?c sim eu tenho um monte de coisas para te perguntar sobre iss :lol: é q eu até criei meu proprio modelo de jtable mas isso fica para um outro topico :lol:
mtooo obg pela ajuda
eu odeio trabalhar com Jtable
tenho um modelo que eu criei que mudo minha vida…
eu nao to conseguindo ter uma visão geral do seu problema (provavelmente pq estou trabalhando na migração do sistema hahaha e não consigo pensar em 2 coisas ao mesmo tempo)
mas vou tentar te ajudar na medida do possivel
for(int i=0;i<resul;i++)
{
BotaoModulo h=new BotaoModulo();
b[i]=h;
b[i].addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
String message;
message=JOptionPane.showInputDialog("");
try {
System.out.println("ação do botão direito dentro da tela inserçao... valor de message é "+message);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
b[i].setBounds(x, y, o, 25);
...
b[i].addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
String comenta=JOptionPane.showInputDialog("");
try {
for(int j=0;j<message.length;j++)
{
if(comenta != null && b[j].getText()!=null)
message[j]=comenta;
System.out.println("b[j] "+b[j].getText()+" seu comentario é "+message[j]);
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
...
public String getMessage()
{
for(int j=0;j<message.length;j++)
return message[j];
return null;
}
bah muito obrigada pela ajuda e pelas explicações,me ajudaram muito!!
:)
por nada
disponha


