Comment accéder à des composants de jFrame de l'autre classe?

J'ai deux classes, l'une est NewJFrame.java. Son code est-

package javaapplication10;
import java.awt.Label;
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
f = new javax.swing.JTextField();
l = new java.awt.Label();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
l.setText("label1");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(139, 139, 139)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(f, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(l, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addContainerGap(185, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(f, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1)
.addGap(22, 22, 22)
.addComponent(l, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(186, Short.MAX_VALUE))
);
pack();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
System.out.println("Calling");
NewClass1 n = new NewClass1();
n.st();
}                                        
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
protected javax.swing.JTextField f;
protected javax.swing.JButton jButton1;
protected java.awt.Label l;
}

Je suis à l'aide de netbeans.
Principales lignes de codes sont -

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
System.out.println("Calling");
NewClass1 n = new NewClass1();
n.st();
} 

et les variables de la déclaration

protected javax.swing.JTextField f;
protected javax.swing.JButton jButton1;
protected java.awt.Label l;

Mon deuxième classe est NewClass.java et que son code est -
package javaapplication10;

import java.awt.Label;
public class NewClass1 extends NewJFrame{
public void st()
{
l.setText(f.getText());
}
}

ce que je veux faire est de cliquer sur le bouton(jbutton1) et le texte écrit dans le textfield(f) doit être défini dans l'Étiquette(l).
Quand je suis en cliquant sur le bouton "Appel" est imprimé sur la console, mais le texte sur l'Étiquette n'est pas en train de changer. Quel est le problème? S'Il Vous Plaît Aider.

  • Je suis désolé 'tf' est faux. Son " f " seulement. J'ai édité la question.
  • 1) Voir L'Utilisation de Plusieurs JFrames, Bonne/Mauvaise Pratique? 2) import java.awt.Label; public class NewJFrame extends javax.swing.JFrame { Ne pas mélanger Swing (JFrame) & AWT (Label) des composants, sauf si nécessaire. Dans ce cas, utilisez un JLabel au lieu de Label. 3) Ne pas prolonger cadre (ou dialogue) sauf en cas de nécessité. Dans ce cas, il suffit d'utiliser une instance de ce composant.
InformationsquelleAutor Ajay Sainy | 2013-03-30