Witam!

Dopiero zaczynam moją przygodę z javą. Doszedłem do wniosku, że dla znajomego napiszę program, dzięki któremu będzie mógł tworzyć i przeglądać harmonogramy dla swoich kierowców.
Aplikację piszę w NetBeans.

Po kolei:
Mam utworzone trzy osobne klasy:

  • Harmonogram - służy do uruchomienia okna głównego programu
  • OknoGLowne - jFrame z jMenu
  • PanelKierowcyDodaj - jPanel ze zdefiniowanymi podstawowymi lablemai, textfieldami etc.

Teraz chciałbym, aby po kliknięciu na "Dodaj kierowcę" w menu w OknoGlowne pojawił się PanelKierowcyDodaj. Nie mogę sobie z tym poradzić.

Tak wygląda wywołanie w menu:

private void KierowcyDodajActionPerformed(java.awt.event.ActionEvent evt) {                                              
          
        
        PanelKierowcyDodaj panel = new PanelKierowcyDodaj();
        add(panel);
        panel.setVisible(true);
        
    }    

Próbowałem jeszcze zrobić to tak:

private void KierowcyDodajActionPerformed(java.awt.event.ActionEvent evt) {  
java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PanelKierowcyDodaj().setVisible(true);
                }
            });
}

Paru innych rzeczy też próbowałem i najczęściej kończyło się na braku błędów przy kompilacji i niemożliwością odpalenia panelu dodawania kierowcy. Szczerze mówiąc - nie wiem gdzie tkwi błąd.

Obecnie tak wygląda program:

Harmonogram.java:

 
package harmonogram;

public class Harmonogram {

    public static void main(String[] args) {
        
                new OknoGlowne().setVisible(true);
                new PanelKierowcyDodaj().setVisible(true);
                
        }
}

PanelKierowcyDodaj.java:


package harmonogram;

public class PanelKierowcyDodaj extends javax.swing.JPanel {

    public PanelKierowcyDodaj() {
        initComponents();
             }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PanelKierowcyDodaj().setVisible(true);
                
            }
            
        });
        
    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLayeredPane1 = new javax.swing.JLayeredPane();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        dodTextImie = new javax.swing.JTextField();
        dodTextNazwisko = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jTextField5 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "DODAWANIE KIEROWCÓW", 0, 0, new java.awt.Font("Dialog", 1, 14))); // NOI18N

        jLabel1.setText("Imię:");
        jLabel1.setBounds(20, 50, 51, 15);
        jLayeredPane1.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel2.setText("Nazwisko");
        jLabel2.setBounds(230, 50, 80, 15);
        jLayeredPane1.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
        dodTextImie.setBounds(20, 70, 170, 30);
        jLayeredPane1.add(dodTextImie, javax.swing.JLayeredPane.DEFAULT_LAYER);
        dodTextNazwisko.setBounds(230, 70, 190, 30);
        jLayeredPane1.add(dodTextNazwisko, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel3.setText("PESEL:");
        jLabel3.setBounds(20, 120, 47, 15);
        jLayeredPane1.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTextField1.setBounds(20, 210, 170, 30);
        jLayeredPane1.add(jTextField1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel4.setText("Seria i nr dowodu osobistego\n");
        jLabel4.setBounds(230, 120, 220, 15);
        jLayeredPane1.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTextField2.setBounds(230, 140, 190, 30);
        jLayeredPane1.add(jTextField2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel5.setText("Telefon domowy:");
        jLabel5.setBounds(230, 190, 150, 15);
        jLayeredPane1.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTextField3.setBounds(20, 140, 170, 30);
        jLayeredPane1.add(jTextField3, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel6.setText("Telefon komórkowy:");
        jLabel6.setBounds(20, 190, 150, 15);
        jLayeredPane1.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTextField4.setBounds(230, 210, 170, 30);
        jLayeredPane1.add(jTextField4, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel7.setText("Telefon firmowy:");
        jLabel7.setBounds(430, 190, 130, 15);
        jLayeredPane1.add(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTextField5.setBounds(430, 210, 170, 30);
        jLayeredPane1.add(jTextField5, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jButton1.setText("DODAJ");
        jButton1.setBounds(400, 310, 78, 25);
        jLayeredPane1.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jButton2.setText("ANULUJ");
        jButton2.setBounds(510, 310, 85, 25);
        jLayeredPane1.add(jButton2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 629, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>                        
    // Variables declaration - do not modify                     
    private javax.swing.JTextField dodTextImie;
    private javax.swing.JTextField dodTextNazwisko;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLayeredPane jLayeredPane1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    // End of variables declaration                   
}

OknoGlowne:

package harmonogram;

public class OknoGlowne extends javax.swing.JFrame {
    
    public OknoGlowne() {
        initComponents();
        
    }

    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jMenuItem2 = new javax.swing.JMenuItem();
        jPanel1 = new javax.swing.JPanel();
        MenuBar = new javax.swing.JMenuBar();
        Plik = new javax.swing.JMenu();
        PlikZamknij = new javax.swing.JMenuItem();
        Kierowcy = new javax.swing.JMenu();
        KierowcyDodaj = new javax.swing.JMenuItem();
        KierowcyUsun = new javax.swing.JMenuItem();
        KierowcyInformacje = new javax.swing.JMenuItem();
        Rozklady = new javax.swing.JMenu();
        RozkladyDodajLinie = new javax.swing.JMenuItem();
        RozkladyUsunLinie = new javax.swing.JMenuItem();
        RozkladyDodajKurs = new javax.swing.JMenuItem();
        RozkladyUsunKurs = new javax.swing.JMenuItem();
        RozkladyPokaz = new javax.swing.JMenuItem();
        Wyjazdy = new javax.swing.JMenu();
        WyjazdyDodaj = new javax.swing.JMenuItem();
        WyjazdyUsun = new javax.swing.JMenuItem();
        WyjazdyPokaz = new javax.swing.JMenuItem();
        Pojazdy = new javax.swing.JMenu();
        PojazdyDodaj = new javax.swing.JMenuItem();
        PojazdyUsun = new javax.swing.JMenuItem();
        PojazdyWyswietl = new javax.swing.JMenuItem();
        Harmonogramy = new javax.swing.JMenu();
        HarmonogramyDodaj = new javax.swing.JMenuItem();
        HarmonogramyUsun = new javax.swing.JMenuItem();
        HarmonogramyPokaz = new javax.swing.JMenuItem();

        jMenuItem2.setText("Zamknij");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Harmonogramy v 1.0");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 629, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 378, Short.MAX_VALUE)
        );

        Plik.setText("PLIK");
        Plik.setMargin(new java.awt.Insets(0, 0, 0, 10));

        PlikZamknij.setLabel("Zamknij");
        PlikZamknij.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PlikZamknijActionPerformed(evt);
            }
        });
        Plik.add(PlikZamknij);

        MenuBar.add(Plik);

        Kierowcy.setText("KIEROWCY");
        Kierowcy.setMargin(new java.awt.Insets(0, 0, 0, 10));

        KierowcyDodaj.setLabel("Dodaj");
        KierowcyDodaj.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                KierowcyDodajActionPerformed(evt);
            }
        });
        Kierowcy.add(KierowcyDodaj);

        KierowcyUsun.setLabel("Usuń");
        Kierowcy.add(KierowcyUsun);

        KierowcyInformacje.setLabel("Informacje o kierowcy");
        Kierowcy.add(KierowcyInformacje);

        MenuBar.add(Kierowcy);

        Rozklady.setLabel("ROZKŁADY JAZDY");
        Rozklady.setMargin(new java.awt.Insets(0, 0, 0, 10));

        RozkladyDodajLinie.setLabel("Dodaj linie");
        Rozklady.add(RozkladyDodajLinie);

        RozkladyUsunLinie.setLabel("Usuń linie");
        Rozklady.add(RozkladyUsunLinie);

        RozkladyDodajKurs.setLabel("Dodaj Kurs");
        Rozklady.add(RozkladyDodajKurs);

        RozkladyUsunKurs.setLabel("Usuń kurs");
        Rozklady.add(RozkladyUsunKurs);

        RozkladyPokaz.setText("Pokaż rozkład jazdy");
        Rozklady.add(RozkladyPokaz);

        MenuBar.add(Rozklady);

        Wyjazdy.setText("WYJAZDY");
        Wyjazdy.setName("Wyjazdy"); // NOI18N

        WyjazdyDodaj.setText("Usuń");
        Wyjazdy.add(WyjazdyDodaj);

        WyjazdyUsun.setText("Dodaj");
        Wyjazdy.add(WyjazdyUsun);

        WyjazdyPokaz.setText("Pokaż");
        Wyjazdy.add(WyjazdyPokaz);

        MenuBar.add(Wyjazdy);

        Pojazdy.setText("POJAZDY");

        PojazdyDodaj.setText("Dodaj pojazd");
        Pojazdy.add(PojazdyDodaj);

        PojazdyUsun.setText("Usuń pojazd");
        Pojazdy.add(PojazdyUsun);

        PojazdyWyswietl.setText("Wyświetl pojazdy");
        Pojazdy.add(PojazdyWyswietl);

        MenuBar.add(Pojazdy);

        Harmonogramy.setLabel("HARMONOGRAMY");

        HarmonogramyDodaj.setLabel("Dodaj harmonogram");
        Harmonogramy.add(HarmonogramyDodaj);

        HarmonogramyUsun.setLabel("Usuń harmonogram");
        Harmonogramy.add(HarmonogramyUsun);

        HarmonogramyPokaz.setLabel("Pokaż harmonogramy");
        Harmonogramy.add(HarmonogramyPokaz);

        MenuBar.add(Harmonogramy);

        setJMenuBar(MenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    
    }                                          

    private void KierowcyDodajActionPerformed(java.awt.event.ActionEvent evt) {                                              
          
        
        PanelKierowcyDodaj panel = new PanelKierowcyDodaj();
        add(panel);
        panel.setVisible(true);
        
    }                                             

    private void PlikZamknijActionPerformed(java.awt.event.ActionEvent evt) {                                            
        
        java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new java.awt.event.WindowEvent(this, java.awt.event.WindowEvent.WINDOW_CLOSING));

    }                                           

    
    public static void main(String args[]) {
        
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
       /* new PanelKierowcyDodaj().setVisible(true);
        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 | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(OknoGlowne.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } */
        //</editor-fold>

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new OknoGlowne().setVisible(true);
                
            }
            
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JMenu Harmonogramy;
    private javax.swing.JMenuItem HarmonogramyDodaj;
    private javax.swing.JMenuItem HarmonogramyPokaz;
    private javax.swing.JMenuItem HarmonogramyUsun;
    private javax.swing.JMenu Kierowcy;
    private javax.swing.JMenuItem KierowcyDodaj;
    private javax.swing.JMenuItem KierowcyInformacje;
    private javax.swing.JMenuItem KierowcyUsun;
    private javax.swing.JMenuBar MenuBar;
    private javax.swing.JMenu Plik;
    private javax.swing.JMenuItem PlikZamknij;
    private javax.swing.JMenu Pojazdy;
    private javax.swing.JMenuItem PojazdyDodaj;
    private javax.swing.JMenuItem PojazdyUsun;
    private javax.swing.JMenuItem PojazdyWyswietl;
    private javax.swing.JMenu Rozklady;
    private javax.swing.JMenuItem RozkladyDodajKurs;
    private javax.swing.JMenuItem RozkladyDodajLinie;
    private javax.swing.JMenuItem RozkladyPokaz;
    private javax.swing.JMenuItem RozkladyUsunKurs;
    private javax.swing.JMenuItem RozkladyUsunLinie;
    private javax.swing.JMenu Wyjazdy;
    private javax.swing.JMenuItem WyjazdyDodaj;
    private javax.swing.JMenuItem WyjazdyPokaz;
    private javax.swing.JMenuItem WyjazdyUsun;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration

    
}