Ciao a tutti ho abbandonato definitivamente il codice che stavo scrivendo prima per questo ho deciso di fare una nuova discussione.
Ho creato un solo JFrame con 2 righe:
La prima riga contiene 4 pulsanti che abilitano le varie visualizzazioni della seconda riga.
Ho pensato di creare così 5 pannelli differenti:
1) contente i 4 bottoni
2) contente il Pannel abilitato dal bottone 1
3) contente il Pannel abilitato dal bottone 2
4) contente il Pannel abilitato dal bottone 3
5) contente il Pannel abilitato dal bottone 4
Ho pensato anche di usare un BorderLayout per posizionare i Pannelli all'interno del JFrame (il pannello dei bottoni BorderLayout.PAGE_START, e i vari
pannelli BorderLayout.CENTER)
Vi posto il codice. Per il momento è implementato solo un pannello (esattamente quello che deve apparire quando il bottone b2 viene premuto)
codice:
package it.polimi.swqtool.data;
import javax.swing.*;
import javax.swing.table.TableModel;
import java.awt.*;
public class ToolGUI {
/**
* @param args
*/
private static void createAndShowGUI(){
//creo la finestra
JFrame frame = new JFrame("TopLevelDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//creo il pannello contenente i bottoni
JPanel bPanel = new JPanel();
//creo i bottoni e li aggiungo al pannello
JButton b1 = new JButton("Bottone 1");
JButton b2 = new JButton("Bottone 2");
JButton b3 = new JButton("Bottone 3");
JButton b4 = new JButton("Bottone 4");
bPanel.add(b1);
bPanel.add(b2);
bPanel.add(b3);
bPanel.add(b4);
//creo le azioni dei vari bottoni
//creo il pannello contente la tabella dei file
JPanel filePanel = new JPanel(new BorderLayout());
//creo la tabella e lo scrollpane che la contiene
//creo i pulsanti ok e annulla
//e li aggiungo al pannello
TableModel fileTable = new FileTableModel("file");
JTable table = new JTable(fileTable);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
JButton okFileB = new JButton("OK");
JButton annullaFileB = new JButton("Annulla");
JLabel label = new JLabel(); //uso una label per distanziare i bottoni ok annulla
filePanel.add(scrollPane, BorderLayout.PAGE_START);
filePanel.add(annullaFileB,BorderLayout.LINE_START);
filePanel.add(label, BorderLayout.CENTER);
filePanel.add(okFileB, BorderLayout.LINE_END);
//aggiungo il pannello al frame nello spazio in alto
frame.getContentPane().add(bPanel, BorderLayout.PAGE_START);
//la rendo visibile
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Il mio problema è: come posso fare in modo di far cambiare il pannello (della seconda riga) in base al bottone premuto?
Ho provato ad insere il codice già suggeritomi:
codice:
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
frame.add(scrollPane, BorderLayout.CENTER);
}
});
ma ho dei problemi di visibilità.
Grazie.
mainetz.