Pessoal estou com um simples problema aqui que creio que algum de vcs irá resolver rapidinho pra mim, é muito simples.
Fiz uma simples aplicação com swing na qual existe um JForm e dentro dele dois JPanel’s, o que eu quero fazer é o seguinte: que um JLabel em uma das JPanel’s pegue a string inserida em um JTextfield no outro JPanel.
No mesmo JPanel do JTextfield criei um botão que no seu ActionListener pede pra ser executado um método do JPanel no qual esta o JLabel, este método setta a string no JLabel por meio de um método no JPanel do JTextfiel, está meio complicado mas sei que vcs conseguem muito bem entender!
Porem este valor não esta sendo inserido, então fiz um teste, ao invés de settar o valor no JLabel escrevi o método pra imprimir algo no console, e ele imprimiu bem, logo percebi que o problema não esta na ação do botão ou no metodo que coloca a string no JLabel mas sim no retorno da string pelo outro método.
Postarei os códigos a seguir:
Classe Main
public class mainClass
{
public mainClass()
{
mainForm mf = new mainForm();
}
public static void main(String[] args)
{
mainClass mClass = new mainClass();
}
}
Classe do JForm
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class mainForm extends JFrame
{
Panel_1 p1;
Panel_2 p2;
public mainForm()
{
super("Main Frame");
p1 = new Panel_1();
p2 = new Panel_2();
add(p1, BorderLayout.NORTH);
add(p2, BorderLayout.CENTER);
setSize(600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
}
Classe do JPanel em que está o JTextfield
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Panel_1 extends JPanel implements ActionListener, FocusListener
{
private JTextField cxTexto_1 = new JTextField();
private JButton btSend = new JButton("Send Text");
private JButton btClear = new JButton("Clear");
Panel_2 p2;
public Panel_1()
{
btClear.addActionListener(this);
btSend.addActionListener(this);
cxTexto_1.addFocusListener(this);
add(cxTexto_1);
add(btSend);
add(btClear);
setBorder(BorderFactory.createTitledBorder("Components Panel"));
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
setVisible(true);
}
public String sendText()
{
return cxTexto_1.getText();
}
@Override
public void actionPerformed(ActionEvent ev)
{
p2 = new Panel_2();
if(ev.getSource() == btClear)
{
cxTexto_1.setText("");
}
if(ev.getSource() == btSend)
{
p2.alterText();
}
}
@Override
public void focusGained(FocusEvent ev)
{
cxTexto_1.selectAll();
}
@Override
public void focusLost(FocusEvent ev)
{
}
}
Classe do JPanel no qual esta o JLabel
import java.awt.BorderLayout;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Panel_2 extends JPanel
{
JLabel lb_1;
Panel_1 p1;
public Panel_2()
{
setBorder(BorderFactory.createTitledBorder("Answer Panel"));
lb_1 = new JLabel("Write something in the box over\n up to see this text be changed");
add(lb_1, BorderLayout.NORTH);
setVisible(true);
}
public void alterText()
{
p1 = new Panel_1();
lb_1.setText(p1.sendText());
}
}
Espero que entendam bem o que se passa aqui, qualquer duvida me contatem por e-mail, cesarbruno2007@gmail.com .