Meu problema é esse,
tenho um método em um JFrame e quero chamar atraves de uma classe.
Para isso eu crio um objeto relacionado ao JFrame e chamo o método.
Mas, porém, entretanto, todavia....
Ele não executa uma linha de código que esta associado a um JTextArea...
Só quero que ele mude o texto.. bem simples haha..
O metódo funciona, pois codifiquei dentro do método um JOptionPane para aparecer uma mensagem para teste..
É o seguinte..
Dentro da minha classe eu crio um objeto
MeuFrame objetoFrame = new MeuFrame();
objetoFrame.mudatexto();
Dentro do JFrame
public void mudatexto(){
jtaMensagem.setText("Mensagem de teste"); //ele não muda o texto.
JOptionPane.showMessageDialog(null,"o método Funcionou");//se eu colocar essa linha de código a mensagem aparece.. mas a edição de texto não
}
Coloca o trecho inteiro do seu código…
Ai eu consigo analisar melhor
Valew
F
felipeaps
Pergunta besta, mas vc não está instanciando seu frame 2 vezes não né?
charleston10
Código da classe
publicclassclsTeste{
publicclsTeste(){
}
publicstaticvoidmain(String[]args){newjfTeste().editaTexto(); //ativa o método para editar o texto do jtareanewjfTeste().setVisible(true); //deixa o frame visivel}
}
código do frame
importjavax.swing.JOptionPane;publicclassjfTesteextendsjavax.swing.JFrame{/** Creates new form jfTeste */publicjfTeste(){initComponents();}publicvoideditaTexto(){jTextArea1.setText("TEXTO EDITADO");JOptionPane.showMessageDialog(rootPane,"oi o método funciona");}@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code">privatevoidinitComponents(){jScrollPane1=newjavax.swing.JScrollPane();jTextArea1=newjavax.swing.JTextArea();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jTextArea1.setColumns(20);jTextArea1.setRows(5);jScrollPane1.setViewportView(jTextArea1);javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1,javax.swing.GroupLayout.DEFAULT_SIZE,380,Short.MAX_VALUE).addContainerGap()));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1,javax.swing.GroupLayout.DEFAULT_SIZE,278,Short.MAX_VALUE).addContainerGap()));pack();}// </editor-fold>/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newjfTeste().setVisible(true);}});}// Variables declaration - do not modifyprivatejavax.swing.JScrollPanejScrollPane1;privatejavax.swing.JTextAreajTextArea1;// End of variables declaration}
[color=red]A mensagem aparece, mas a edição do texto não..[/color]
L
Leo
É o que o felipeaps disse…
Vc está instanciando 2 vezes a classe…
L
Leo
Troque por isto:
publicclassclsTeste{publicclsTeste(){}publicstaticvoidmain(String[]args){jfTeste()tela=jfTeste();tela.editaTexto(); //ativa o método para editar o texto do jtarea tela.setVisible(true); //deixa o frame visivel }
}
charleston10
kkkk rindo demais… de mim msmo…
era isso, em tantas linhas de codigo nem percebi…
acabei fazendo outro projeto pra exemplificar oq tava acontecendo…
charleston10
Outra dúvida, e se meu JFrame estiver aberto e eu quiser executar o método mesmo assim…
como faço???
testei agora, ele funfa a mensagem…
L
Leo
Outra dúvida, e se meu JFrame estiver aberto e eu quiser executar o método mesmo assim…
como faço???
Como assim? Vc quer clicar na tela e alterar o fonte? Use um listener…
charleston10
Como eu usario o Listener nesse exemplo?
L
Leo
Você pode adicionar um evento ao seu JTextArea. Você pode adicionar eventos do mouse(click, “movimentos”), teclado…
Valeu deu certo aqui, pesquisei muito, mas o que ajudou mesmo foi o documento da oracle
Criei dois frames
Um que vai receber a requisição para acionar o método dentro do seu frame(jfTeste)
e outro que vai acionar o método (jfExecutaListener)
Código
jfExecutaListener
publicclassjfExecutaListenerextendsjavax.swing.JFrame{//instanciação da tela que vai receber a alteraçaojfTestetela=newjfTeste();/** Creates new form jfExecutaListener */publicjfExecutaListener(){initComponents();}@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code">privatevoidinitComponents(){jButton1=newjavax.swing.JButton();jButton2=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jButton1.setText("Executa listener");jButton1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton1ActionPerformed(evt);}});jButton2.setText("Abrir Frame de teste");jButton2.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton2ActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,false).addComponent(jButton1,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE).addComponent(jButton2,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)).addContainerGap(259,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(96,96,96).addComponent(jButton2).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jButton1).addContainerGap(58,Short.MAX_VALUE)));pack();}// </editor-fold>privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){//deixa a jFrame de teste visivel tela.setVisible(true);}privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){//aciona o metodo que vai mudar o textotela.actionPerformed(evt);}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newjfExecutaListener().setVisible(true);}});}// Variables declaration - do not modifyprivatejavax.swing.JButtonjButton1;privatejavax.swing.JButtonjButton2;// End of variables declaration}
jfTeste (formulario que contem o método)
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JOptionPane;publicclassjfTesteextendsjavax.swing.JFrameimplementsActionListener{privateintnumClicks=0;/** Creates new form jfTeste */publicjfTeste(){initComponents();}publicvoideditaTexto(){jTextArea1.setText("TEXTO EDITADO");JOptionPane.showMessageDialog(rootPane,"oi o método funciona");}@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code"> privatevoidinitComponents(){jScrollPane1=newjavax.swing.JScrollPane();jTextArea1=newjavax.swing.JTextArea();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jTextArea1.setColumns(20);jTextArea1.setRows(5);jScrollPane1.setViewportView(jTextArea1);javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1,javax.swing.GroupLayout.DEFAULT_SIZE,380,Short.MAX_VALUE).addContainerGap()));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1,javax.swing.GroupLayout.DEFAULT_SIZE,278,Short.MAX_VALUE).addContainerGap()));pack();}// </editor-fold> /** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newjfTeste().setVisible(true);}});}// Variables declaration - do not modify privatejavax.swing.JScrollPanejScrollPane1;privatejavax.swing.JTextAreajTextArea1;// End of variables declaration /* * METODO ACIONADO PELO LISTENER */publicvoidactionPerformed(ActionEvente){numClicks++;jTextArea1.setText(String.valueOf(numClicks));}}