Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Swing] Problema con JDialog

    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
    www.dialettitaliani.it

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [Swing] Problema con JDialog

    Originariamente inviato da temuccio
    Tutto funziona per il meglio a parte che viene creata una nuova finestra, ovvero sembra non funzionare JDialog.
    Non capisco, guarda che JDialog È una nuova finestra!
    Spiegati meglio, non è chiaro qual è il problema :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.