Witam
Głowię się już od jakiegoś nad jednym zagadnieniem. Tworzę 2 okna. 1 okno zawiera Jlabel i przycisk. Przycisk ten otwiera kolejne okno, które posiada dwa pola jTextField. Jest tam również przycisk, który ma za zadanie przypisać zmiennym String imie, nazwisko ciąg znaków z tych pól. Kolejne czynności to utworzenie zmiennej referencyjnej okna pierwszego i wywołanie prostej metody Jlabel.setText(); ta funkcja w żaden sposób nie chce mi zmienić w oknie 1 JLabel. Co robię nie tak ? Podczas wykonywania kodu nie występują błędy.
W zasadzie mogę rozszerzyć 2 okno o klasę JDialog ale mi chodzi bardziej o zrozumienie dlaczego to nie działa na takim modelu jakim prezentuję. Będę wdzięczny za podpowiedź.
Główna klasa
package test;
public class Test {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Okno().setVisible(true);
}
});
}
}
pierwsze okno
package test;
public class Okno extends javax.swing.JFrame {
public Okno() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Ten tekst ma się zmienić");
jButton1.setText("Nowe okno");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
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(129, 129, 129)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(156, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(40, 40, 40)
.addComponent(jLabel1)
.addGap(54, 54, 54)
.addComponent(jButton1)
.addContainerGap(169, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Dodaj().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
public javax.swing.JLabel jLabel1;
// End of variables declaration
}
drugie okno
package test;
public class Dodaj extends javax.swing.JFrame {
public Dodaj() {
initComponents();
setLocationRelativeTo(null);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextField1.setText("imie");
jTextField2.setText("nazwisko");
jButton1.setText("Zapisz");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
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(141, 141, 141)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(186, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1)
.addContainerGap(180, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
//deklaracja zmiennych
Okno okno;
String imie,nazwisko;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
imie = jTextField1.getText();
nazwisko = jTextField2.getText();
okno = new Okno();
okno.jLabel1.setText(imie + " " + nazwisko); //Ta metoda nie zmienia wartości Jlabel w Okno();
dispose();
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}