Witam,
Na początek zaznaczę, że dopiero zaczynam swoją przygodę z Javą.
W Netbeans graficznie utworzyłem sobie JFrame, dodałem do niego panel (panel1) i utworzyłem nowy JPanel Form(panel2) z New File. W na panelu w JFrame ustawiam sobie kontrolki, etykiety, guziki itp. Na panelu stworzonym poprzez New file tworze sobie tabelki itp. Moje pytanie. Jak podmienić panel1 na panel2, żeby panel2 "wyparł" panel1 z JFrame ?
W poniższym linku na końcu nagrania jest podobne pytanie
http://www.youtube.com/watch?v=0kk9vnBALw4&feature=related
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 14 lat
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 14 lat
Udało mi się usunąć istniejący panel ale jeszcze mam problem z dodaniem nowego.
Mam 3 pliki:
Main.java
package test_paneli;
public class Main {
public static void main(String[] args) {
// TODO code application logic here
Ramka obiekt_ramkowy = new Ramka();
obiekt_ramkowy.setVisible(true);
}
}
Ramka.java
package test_paneli;
public class Ramka extends javax.swing.JFrame {
/** Creates new form Ramka */
public Ramka() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
Stary_panel = new javax.swing.JPanel();
jSlider1 = new javax.swing.JSlider();
podmianka = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout Stary_panelLayout = new javax.swing.GroupLayout(Stary_panel);
Stary_panel.setLayout(Stary_panelLayout);
Stary_panelLayout.setHorizontalGroup(
Stary_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(Stary_panelLayout.createSequentialGroup()
.addGap(88, 88, 88)
.addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(92, Short.MAX_VALUE))
);
Stary_panelLayout.setVerticalGroup(
Stary_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(Stary_panelLayout.createSequentialGroup()
.addGap(56, 56, 56)
.addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(117, Short.MAX_VALUE))
);
podmianka.setText("Podmien");
podmianka.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
podmiankaActionPerformed(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()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Stary_panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(podmianka, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(Stary_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(29, 29, 29)
.addComponent(podmianka)
.addContainerGap(39, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void podmiankaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
remove(this.Stary_panel);
Panel_do_podmiany panelkowy = new Panel_do_podmiany();
add(panelkowy);
validate();
repaint();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ramka().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel Stary_panel;
private javax.swing.JSlider jSlider1;
private javax.swing.JButton podmianka;
// End of variables declaration
}
oraz Panel_do_podmiany.java
package test_paneli;
public class Panel_do_podmiany extends javax.swing.JPanel {
/** Creates new form Panel_do_podmiany */
public Panel_do_podmiany() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(38, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 257, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(29, 29, 29))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 194, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}
To dopisałem sam, więc tu pewnie jest błąd. Całą resztę wyklikałem.
private void podmiankaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
remove(this.Stary_panel);
Panel_do_podmiany panelkowy = new Panel_do_podmiany();
add(panelkowy);
validate();
repaint();
}
- Rejestracja:ponad 17 lat
- Ostatnio:około 6 lat
Jak mam np 2 panele to na początku programu ustawiam panel1.setVisible(true), a panel2.setVisible(false).
Później jak np. po użyciu jakiegoś buttona, chce żeby wyświetlił mi się panel2 to robię panel1.setVisible(false); a panel2.setVisible(true); i jeszcze repain() i już jest ok
- Rejestracja:ponad 14 lat
- Ostatnio:ponad 14 lat
A mógłbyś podać jakiś przykładowy kod jak podmieniasz jpanel z osobnej klasy :)
Dobra zrobiłem po swojemu. W głównym oknie JFrame utworzyłem netbeans-em dwa panele, lewy i prawy.
W prawym ustawiłem Layout Border. I teraz wrzucam do niego panel z zewnetrznego pliku
Prawy_Panel.add(panel_zmiana);
Prawy_Panel.validate();
Prawy_Panel.repaint();
panel_zmiana jest to panel utworzony w netbeans-ie w osobnym pliku, rozmiarami dopasowałem do wymiarów Prawy_Panel i podmienia :)
Zapewne można zrobić to wrzucajac bezposrednio panel_zmiana w JFrame ale dopiero zaczynam swoja przygodę z Java i do amatorskich zastosowań starcza :)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.