Alla fine credo che nel mio codice mancassero solo
pannello.revalidate();
pannello.repaint();
nel metodo set_panel(JPanel panel), ma mi sbaglio perchè non funziona ancora, eppure mi sembra uguale al tuo.
codice:
class main_panel extends JPanel{
JTextArea area;
Color sfondo;
Font textfont;
Border orangeBorder;
Image miaimmagine;
main_panel(){
super();
area=new JTextArea();
miaimmagine=Toolkit.getDefaultToolkit().getImage("immagini/Java.gif");
textfont=new Font("serif", Font.BOLD, 14);
sfondo=new Color(210,220,230);
orangeBorder = BorderFactory.createLineBorder(Color.ORANGE, 5);
area.setText("testo ");
setBorder(orangeBorder);
area.setBackground(sfondo);
area.setLocation(280, 30);
area.setSize(400,400);
area.setVisible(true);
area.setFont(textfont);
area.setLineWrap(true);
setLayout(null);
setBackground(sfondo);
add(area);
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(miaimmagine,40,50,170,310,this);
}
}
codice:
class confronta_panel extends JPanel {
JLabel etichetta, etichetta2;
JButton ok;
Color sfondo;
Font textfont;
Border orangeBorder;
confronta_panel(){
super();
etichetta=new JLabel("Directory");
etichetta2=new JLabel();
ok=new JButton("Avanti");
textfont=new Font("serif", Font.BOLD, 14);
sfondo=new Color(210,220,230);
orangeBorder = BorderFactory.createLineBorder(Color.ORANGE, 5);
etichetta.setFont(textfont);
etichetta2.setFont(textfont);
ok.setFont(textfont);
setBackground(sfondo);
setBorder(orangeBorder);
setLayout(null);
add(ok);
add(etichetta);
add(etichetta2);
etichetta.setVisible(true);
etichetta2.setVisible(true);
ok.setVisible(true);
etichetta.setLocation(30,50);
etichetta2.setLocation(50,90);
ok.setLocation(120,120);
}
}
CLASSE PRINCIPALE, chiama gli altri 2 pannelli
codice:
class vocemenu1 extends JMenu{
JMenuItem apri;
JMenuItem salva;
JMenuItem esci;
JMenuItem stampa;
vocemenu1(String key){
super(key);
apri=new JMenuItem(" Apri", new ImageIcon("immagini/icon_open_folder.gif"));
salva=new JMenuItem(" Salva", new ImageIcon("immagini/save_icon.gif"));
stampa=new JMenuItem(" Stampa", new ImageIcon("immagini/printer-icon.png"));
esci=new JMenuItem(" Esci", new ImageIcon("immagini/exit.png"));
add(apri);
add(salva);
addSeparator();
add(stampa);
addSeparator();
add(esci);
apri.addActionListener(new VocemenuListener());
salva.addActionListener(new VocemenuListener());
stampa.addActionListener(new VocemenuListener());
esci.addActionListener(new VocemenuListener());
}
}
class vocemenu2 extends JMenu{
JMenuItem confronta1;
JMenuItem confronta_rc;
JMenuItem cerca;
JMenuItem aggiorna;
vocemenu2(String key){
super(key);
confronta1=new JMenuItem(" Confronta due directory", new ImageIcon("immagini/iconFolder.gif"));
confronta_rc=new JMenuItem(" Confronto ricorsivo tra due directory", new ImageIcon("immagini/iconFolder.gif"));
cerca=new JMenuItem(" Cerca informazioni", new ImageIcon("immagini/icon-search.png"));
aggiorna=new JMenuItem(" Aggiorna due directory", new ImageIcon("immagini/icon-refresh.gif"));
add(confronta1);
add(confronta_rc);
addSeparator();
add(aggiorna);
addSeparator();
add(cerca);
confronta1.addActionListener(new VocemenuListener());
confronta_rc.addActionListener(new VocemenuListener());
cerca.addActionListener(new VocemenuListener());
aggiorna.addActionListener(new VocemenuListener());
}
}
class vocemenu3 extends JMenu{
JMenuItem info;
JMenuItem doc;
vocemenu3(String key){
super(key);
info=new JMenuItem(" Informazioni", new ImageIcon("immagini/icon-info.png"));
doc=new JMenuItem(" Documentazione: codice sorgente", new ImageIcon("immagini/icon-document.gif"));
add(info);
add(doc);
info.addActionListener(new VocemenuListener());
doc.addActionListener(new VocemenuListener());
}
}
class my_menu extends JMenuBar{
vocemenu1 one;
vocemenu2 two;
vocemenu3 three;
my_menu(){
super();
one=new vocemenu1("File");
two=new vocemenu2("Operazioni");
three=new vocemenu3("Info");
add(one);
add(two);
add(three);
}
}
class VocemenuListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()){
case " Apri":
break;
case " Salva":
break;
case " Stampa":
break;
case " Esci":
break;
case " Confronta due directory":
TRY_JAVAgui.frame.setContentPane(new confronta_panel());
break;
case " Confronto ricorsivo tra due directory":
break;
case " Cerca informazioni":
break;
case " Aggiorna due directory":
break;
case " Informazioni":
TRY_JAVAgui.frame.setContentPane(new main_panel());
break;
case " Documentazione: codice sorgente":
break;
}
}
}
class FinestraListener implements WindowListener{
@Override
public void windowOpened(WindowEvent e) {
System.out.println("apro");
}
@Override
public void windowClosing(WindowEvent e) {
//finestra per chiedere se vuoi uscire
System.out.println("esco");
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
}
public class TRY_JAVAgui {
static JFrame frame;
my_menu menu;
JPanel pannello; //tipo base,upcast
TRY_JAVAgui(){
frame=new JFrame("Finestra");
menu=new my_menu();
pannello= new confronta_panel();
frame.setContentPane(pannello);
frame.setJMenuBar(menu);
frame.addWindowListener(new FinestraListener());
frame.setResizable(true);
frame.setMinimumSize(new Dimension(820,510));
frame.setSize(820,510);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
frame.setVisible(true);
frame.setIconImage((new ImageIcon("immagini/foldersearch.png")).getImage());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
TRY_JAVAgui(String key){
this();
frame.setTitle(key);
}
void set_panel(JPanel panel){
pannello= panel;
frame.setContentPane(pannello);
pannello.revalidate();
pannello.repaint();
}
public static void main(String[] args) {
TRY_JAVAgui mainWindow= new TRY_JAVAgui("titolo");
}
}