Buona sera ragazzi,
mi sto prodigando a fare una piccola interfaccia con Java Swing.
Ho un classe Home di questo tipo:
codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Home implements GeneratoreGUI {
    public void creaInterfaccia(Container contenitore) {
        //da definire...
        GridBagLayout layout=new GridBagLayout();
        /*Creazione di un GridBag*/
        GridBagConstraints lim =new GridBagConstraints();
        /*Creazione di un GridBagConstraints*/
        contenitore.setLayout(layout);
        contenitore.setBackground(Color.white);
        contenitore.setMinimumSize(new Dimension(800,600));
        contenitore.setPreferredSize(new Dimension(800,600));
        contenitore.setMaximumSize(new Dimension(800,600));
        /*imposto layout come layout manager di contenitore*/


        /*
         * Bottome Homepage
         */
        Image img1 = Toolkit.getDefaultToolkit().getImage("/home/temuccio/universita/mockup/immagini/paginainizioselect.png");
        Image newimg1 = img1.getScaledInstance(264,45,  java.awt.Image.SCALE_SMOOTH);
        ImageIcon icona1 = new ImageIcon(newimg1);
        
        JButton c0=new JButton("");
        c0.setIcon(icona1);
        c0.setMinimumSize(new Dimension(264,45));
        c0.setMaximumSize(new Dimension(264,45));
        c0.setPreferredSize(new Dimension(264,45));
        c0.setBackground(Color.white);
        c0.setBorder(null);
        
        c0.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                GeneratoreGUI generatore = null;
                /* Crea un'istanza di generatore a partire da una
                classe il cui nome pienamente qualificato è contenuto
                nel primo paramentro di avvio del programma */
                try {
                    Class<?> classeGeneratore = Class.forName("Categorie");
                    generatore = (GeneratoreGUI)classeGeneratore.newInstance();
                }
                catch(ArrayIndexOutOfBoundsException ex) {
                System.err.println("Manca il nome della classe "+
                "che genera il layout");
                System.out.println("Uso: java Main nomeClasse");
                System.out.println("nomeClasse è il nome pienamente " +
                "qualificato di una classe che implementa " +
                "GeneratoreGUI e che possiede un costruttore "+
                "senza argomenti.");
                }
                catch(Exception ex) {
                    System.err.println(
                    "Errore durante la produzione"+
                    " del generatore di layout");
                    System.err.println(ex.getMessage());
                }
                /* Nel caso in cui non si siano verificate eccezioni
                generatore sarà diverso da null */
                if(generatore != null) {
                   //System.out.println(generatore);
                   MyInputPane ip=new MyInputPane(generatore);
                   ip.show();
                //SwingUtilities.invokeLater(new MyInputPane(generatore));
                }
            }
        });

        /*creazione del primo componente*/
        lim.gridx=0;
        lim.gridy=0;
        lim.weightx=1;
        lim.weighty=1;
        lim.ipadx=0;
        lim.ipady=0;
        lim.insets.top=10;
        lim.insets.bottom=0;
        lim.insets.left=0;
        lim.insets.right=0;

        lim.fill=GridBagConstraints.NONE;


        layout.setConstraints(c0, lim);
        contenitore.add(c0);



        Image img2 = Toolkit.getDefaultToolkit().getImage("/home/temuccio/universita/mockup/immagini/guida.png");
        Image newimg2 = img2.getScaledInstance(264,45,  java.awt.Image.SCALE_SMOOTH);
        ImageIcon icona2 = new ImageIcon(newimg2);
        JButton c1=new JButton("");
        c1.setIcon(icona2);
        c1.setMinimumSize(new Dimension(264,45));
        c1.setMaximumSize(new Dimension(264,45));
        c1.setPreferredSize(new Dimension(264,45));
        c1.setBackground(Color.white);
        c1.setBorder(null);
        /*creazione del primo componente*/
        lim.gridx=1;
        lim.gridy=0;
        lim.weightx=1;
        lim.weighty=1;
        lim.ipadx=0;
        lim.ipady=0;
        lim.insets.top=10;
        lim.insets.bottom=0;
        lim.insets.left=0;
        lim.insets.right=0;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c1, lim);
        contenitore.add(c1);

        Image img3 = Toolkit.getDefaultToolkit().getImage("/home/temuccio/universita/mockup/immagini/inglese.png");
        Image newimg3 = img3.getScaledInstance(264,45,  java.awt.Image.SCALE_SMOOTH);
        ImageIcon icona3 = new ImageIcon(newimg3);
        JButton c2=new JButton("");
        c2.setIcon(icona3);
        c2.setMinimumSize(new Dimension(264,45));
        c2.setMaximumSize(new Dimension(264,45));
        c2.setPreferredSize(new Dimension(264,45));
        c2.setBackground(Color.white);
        c2.setBorder(null);
        /*creazione del primo componente*/
        lim.gridx=2;
        lim.gridy=0;
        lim.weightx=1;
        lim.weighty=1;
        lim.ipadx=0;
        lim.ipady=0;
        lim.insets.top=10;
        lim.insets.bottom=0;
        lim.insets.left=0;
        lim.insets.right=10;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c2, lim);
        contenitore.add(c2);

        Component briciola=new JTextArea("Briciola di pane:Home");
        lim.gridx=0;
        lim.gridy=1;
        lim.gridwidth=3;
        lim.gridheight=1;
        lim.weightx=1;
        lim.weighty=1;
        lim.ipadx=0;
        lim.ipady=0;

        lim.fill=GridBagConstraints.NONE;
        lim.anchor=GridBagConstraints.WEST;

        layout.setConstraints(briciola, lim);
        contenitore.add(briciola);


        Component c3=new JButton("C3");
        c3.setMinimumSize(new Dimension(50,50));
        c3.setMaximumSize(new Dimension(50,50));
        c3.setPreferredSize(new Dimension(50,50));
        /*creazione del primo componente*/
        lim.gridx=0;
        lim.gridy=2;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c3, lim);
        contenitore.add(c3);

        Component c4=new JButton("C4");
        c4.setMinimumSize(new Dimension(50,50));
        c4.setMaximumSize(new Dimension(50,50));
        c4.setPreferredSize(new Dimension(50,50));
        /*creazione del primo componente*/
        lim.gridx=1;
        lim.gridy=2;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c4, lim);
        contenitore.add(c4);

        Component c5=new JButton("C5");
        c5.setMinimumSize(new Dimension(50,50));
        c5.setMaximumSize(new Dimension(50,50));
        c5.setPreferredSize(new Dimension(50,50));
        /*creazione del primo componente*/
        lim.gridx=2;
        lim.gridy=2;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c5, lim);
        contenitore.add(c5);

        Component c6=new JButton("C6");
        c6.setMinimumSize(new Dimension(50,50));
        c6.setMaximumSize(new Dimension(50,50));
        c6.setPreferredSize(new Dimension(50,50));
        /*creazione del primo componente*/
        lim.gridx=0;
        lim.gridy=3;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c6, lim);
        contenitore.add(c6);

        Component c7=new JButton("C7");
        c7.setMinimumSize(new Dimension(50,50));
        c7.setMaximumSize(new Dimension(50,50));
        c7.setPreferredSize(new Dimension(50,50));
        /*creazione del primo componente*/
        lim.gridx=1;
        lim.gridy=3;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c7, lim);
        contenitore.add(c7);

        Component c8=new JButton("C8");
        c8.setMinimumSize(new Dimension(50,50));
        c8.setMaximumSize(new Dimension(50,50));
        c8.setPreferredSize(new Dimension(50,50));
        /*creazione del primo componente*/
        lim.gridx=2;
        lim.gridy=3;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c8, lim);
        contenitore.add(c8);

        Component c9=new JButton("C9");
        c9.setMinimumSize(new Dimension(50,20));
        c9.setMaximumSize(new Dimension(50,20));
        c9.setPreferredSize(new Dimension(50,20));
        /*creazione del primo componente*/
        lim.gridx=0;
        lim.gridy=4;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c9, lim);
        contenitore.add(c9);

        Component c10=new JButton("C10");
        c10.setMinimumSize(new Dimension(50,20));
        c10.setMaximumSize(new Dimension(50,20));
        c10.setPreferredSize(new Dimension(50,20));
        /*creazione del primo componente*/
        lim.gridx=1;
        lim.gridy=4;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c10, lim);
        contenitore.add(c10);

        Component c11=new JButton("C11");
        c11.setMinimumSize(new Dimension(50,20));
        c11.setMaximumSize(new Dimension(50,20));
        c11.setPreferredSize(new Dimension(50,20));
        /*creazione del primo componente*/
        lim.gridx=2;
        lim.gridy=4;
        lim.weightx=1;
        lim.weighty=1;
        lim.gridwidth=1;
        lim.gridheight=1;
        lim.ipadx=50;
        lim.ipady=50;

        lim.fill=GridBagConstraints.NONE;

        layout.setConstraints(c11, lim);
        contenitore.add(c11);
        

    }

}
quando viene premuto il pulsante c0, dovrei aggiornare l'applicazione con la classe Categorie(che adesso è simile ad Home). Tutto funziona per il meglio a parte che viene creata una nuova finestra, ovvero sembra non funzionare JDialog.
Vi invio anche il codice di MyInputPane.java:
codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyInputPane implements ActionListener{
    private JPanel contentPane = new JPanel();
    private JDialog dialog;
    private final GeneratoreGUI GENERATORE_GUI;
    public MyInputPane(GeneratoreGUI g) {
        GENERATORE_GUI = g;
        
        
        //contentPane.add(contenitore);
/*
        JButton confirm = new JButton("ok");
        confirm.addActionListener(this);
        JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        buttons.add(confirm);
        contentPane.add(buttons, BorderLayout.SOUTH);
        contentPane.setPreferredSize(new Dimension(300, 300));
 */
    }
    public void actionPerformed(ActionEvent e) {
        dialog.dispose();
    }
    public void show() {
       // System.out.println("Sono nella funzione");
        Container contenitore = new JPanel();
        GENERATORE_GUI.creaInterfaccia(contenitore);
        JDialog finestra = new JDialog();
        finestra.add(contenitore);
        //finestra.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        finestra.pack();
        finestra.setVisible(true);
    }
}
Sapreste darmi una mano?
Ps: ho anche una classe interfaccia per popolare il contenitore:
codice:
public interface GeneratoreGUI {
    /** Crea e aggiunge dei componenti a contenitore */
    void creaInterfaccia(java.awt.Container contenitore);
}
Grazie a tutti e scusate per i disturbo