konto usunięte

Temat: Jak wyświetlić jPanel po kliknięcie w menu - jPanel to...

Witam.

Jestem całkowicie zielony z Javy i dopiero zacząłem jej naukę.
Doszedłem do wniosku, że napiszę sobie bardzo prosty program do ustalania harmonogramu jazdy kierowców. Jest on potrzebny znajomemu, więc nauka i program nie pójdą w las :)
Całość pisżę w NetBeans

Ale do rzeczy. Póki co w programie Harmonogram stworzyłem sobie 3 pliki klas:
- Harmonogram - który wyświetla okno na ekran
- OknoGlowne - zdefiniowane jFrame oraz menu
- PanelKierowcyDodaj - jPanel na którym znajdują się labele, pola tekstowe i przyciski.

I teraz po kolei. jak już wspomniałem w OknoGlowne mam zdefiniowane menu. I teraz chciałbym, aby po kliknięciu na "Dodaj Kierowcę" pojawił się panel zdefiniowany w klasie PanelKierowcyDodaj. Póki co się nie pojawia i program nie zgłasza błędów.
Ja to rozmkiniłem w ten sposób:

- menu do dodawania kierowców:
private void KierowcyDodajActionPerformed(java.awt.event.ActionEvent evt) {

PanelKierowcyDodaj panel = new PanelKierowcyDodaj();
add(panel);
panel.setVisible(true);
}

- jPanel zdefiniowany w klasie PanelKierowcyDodaj (na razie nie robi nic):
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())
);
}

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;

}

Nie do końća jestem pewny, czy aby dobrze wywołuję klasę w menu (skoro nie działa to coś jest z tym wywołaniem nie tak).
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: Jak wyświetlić jPanel po kliknięcie w menu - jPanel to...

Wszystko napisałeś dobrze. Twój panel ma jednak rozmiar 0px x 0px więc nie zobaczysz go w głównym oknie. Dodaj
PanelKierowcyDodaj panel = new PanelKierowcyDodaj();
panel.setSize(400, 300);
add(panel);
panel.setVIsible(true);
Wygląda na to, że ten panel ma się w ten sposób zachowywać zawsze. Te ustawienia dodałbym do konstruktora klasy PanelKierowcyDodaj
public class PanelKierowcyDodaj extends javax.swing.JPanel {

public PanelKierowcyDodaj() {
initComponents();
setSize(400, 300);
setVisible(true);
}
wtedy w kodzie wywołać panel możesz następująco
add(new PanelKierowcyDodaj());
Dodatkowo aby sprawdzić czy panel się ogóle wyświetla z reguły robię sobie ramkę
panel.setBorder(new MatteBorder(2, 2, 2, 2, Color.BLACK));
albo zmieniam kolor tła.

konto usunięte

Temat: Jak wyświetlić jPanel po kliknięcie w menu - jPanel to...

Dziękuję bardzo, pomogło :) Na przyszłość postaram się pamiętać o tego typu rzeczach :)



Wyślij zaproszenie do