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

    Aiuto con realizzazione di un visualizzatore di immagini!

    Ciao ragazzi, sto realizzando, su richiesta della mia professoressa, un visualizzatore di immagini, tuttavia molti comandi non li ha ancora spiegati quindi mi trovo un po' in difficoltà. Mi servirebbe una mano per aggiungere le immagini e per allineare sia i radioButton che il Bottone per chiudere il programma, potete darmi una mano? Grazie! Questo è il codice:

    codice:
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.util.EventObject;
    
    
    import javax.swing.ButtonGroup;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    import javax.swing.JTextArea;
    
    
    
    
    
    
    
    
    
    
        public class City extends JFrame{
            //dichiaro i bottoni
            private JButton BtEsci;
            private JTextArea taProva;
            private Container c;
            private JRadioButton r1,r2,r3,r4,r5,r6;
            private JPanel p1,p2;
            //nnamo avanti
            public City(){
                super();
                setBounds(60,60,300,500);
                taProva=new JTextArea(10,15);
                //caselle di scelta esclusive
            String[] Nomecitta = {"Roma","Sidney","Londra","NewYork","Parigi","Seul"};
            Nomecitta[0]="Roma";
            r1=new JRadioButton(Nomecitta[0]);
            r2=new JRadioButton(Nomecitta[1]);
            r3=new JRadioButton(Nomecitta[2]);
            r4=new JRadioButton(Nomecitta[3]);
            r5=new JRadioButton(Nomecitta[4]);
            r6=new JRadioButton(Nomecitta[5]);
                BtEsci = new JButton("Esci");
                BtEsci.addActionListener(new Ascolta());
                r1.addItemListener(new Ascolta2());
                r2.addItemListener(new Ascolta2());
                r3.addItemListener(new Ascolta2());
                r4.addItemListener(new Ascolta2());
                r5.addItemListener(new Ascolta2());
                r6.addItemListener(new Ascolta2());
                c=getContentPane();
                c.add(BtEsci);
    
    
                //rendiamo i bottoni esclusivi
                ButtonGroup btg=new ButtonGroup();
                btg.add(r1);
                btg.add(r2);
                btg.add(r3);
                btg.add(r4);
                btg.add(r5);
                btg.add(r6);
                p1=new JPanel();
                p1.setLayout(new GridLayout(6,16,15,15));
                p1.add(r1,"west");
                p1.add(r2);
                p1.add(r3);
                p1.add(r4);
                p1.add(r5);
                p1.add(r6,"west");
                p1.add(BtEsci,"south");
                c.add(p1);
            }
                
                //JOptionPane.showMessageDialog(r1,"Hai scelto:");
                
                private class Ascolta implements ActionListener{
    
    
                    public void actionPerformed(ActionEvent e) {
                        
                        
                        if(e.getSource()==BtEsci){
                            if(JOptionPane.showConfirmDialog (null, "Conferma")==JOptionPane.OK_OPTION)
                            {
                            
                            
                            System.exit(0);
                            }
                        }
                    }
                
                
                
                
    
    
                    }
                    private class Ascolta2 implements ItemListener{
    
    
                public void itemStateChanged(ItemEvent arg0) {
                if(r1.isSelected()){
                    ImageIcon immagine=new ImageIcon("ggg.jpg");
                    
                    JOptionPane.showMessageDialog(r1,"Hai scelto: Roma");
    
    
                    }
                else if(r2.isSelected()){
                    
                    JOptionPane.showMessageDialog(r1,"Hai scelto: Sidney");
    
    
                            }
    else if(r3.isSelected()){
                    
            JOptionPane.showMessageDialog(r3,"Hai scelto: Londra");
                            
                        
                        }
    else if(r4.isSelected()){
        
        JOptionPane.showMessageDialog(r4,"Hai scelto: New York");
                        }
    else if(r5.isSelected()){
        
        JOptionPane.showMessageDialog(r5,"Hai scelto: Parigi");
        }
    else if(r6.isSelected()){
        
        JOptionPane.showMessageDialog(r6,"Hai scelto: Seul");
    }
                }
                    }
        }
    Immagini allegate Immagini allegate
    Ultima modifica di LeleFT; 15-02-2016 a 13:59 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ciao, immagino che l'immagine allegata a destra sia il risultato che vuoi ottenere.

    Un buona soluzione potrebbe essere disporre tre pannelli all'interno di un BorderLayout: puoi usare un pannello per i JRadioButton, un pannello per la visualizzazione dell'immagine e un pannello che contenga solo il pulsante per uscire.

    Poi aggiungi i pannelli al tuo content pane nelle corrette posizioni, quindi il pannello con i JRadioButton andrà posizionato a sinistra (BorderLayout.WEST), il pannello con l'immagine al centro (BorderLayout.CENTER) e il pannello con il pulsante in basso (BorderLayout.SOUTH).

    Ovviamente puoi farlo in altri modi e molto dipende dall'abitudine che hai nell'uso dei LayoutManager, a me personalmente il GridLayout non piace, io userei un BoxLayout verticale per il pannello contenente i radiobuttons e un semplice FlowLayout per il pannello contenente il bottone per uscire.

    Per quanto riguarda il pannello per la visualizzazione dell'immagine, ti suggerirei di creare una classe che estende JPanel, ti posto un codice che ho utilizzato io in casi simili:

    codice:
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import javax.imageio.ImageIO;
    import javax.swing.*;
    public class ImagePanel extends JPanel
    {
        BufferedImage image;
        public ImagePanel(String src)
        {
            super();
            image=readImage(src);
        }
        public BufferedImage readImage(String src)
        {
            try{
                return ImageIO.read(new File(src));
            }
            catch(Exception ex){
                System.out.print("\nError in loading image");
            }
            return null;
        }
        protected void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            g.drawImage(image,0,0,null);
        }
    }
    In pratica viene costruito un pannello passando come parametro il percorso dell'immagine da leggere, che viene disegnata nel pannello all'interno del metodo paintComponent(Graphics g).

    Nel tuo caso le immagini da leggere sono più d'una, occorre quindi studiare dove salvarle (ad esempio in un vettore all'interno della classe ImagePanel) e come cambiarle alla pressione di un radiobutton (ad esempio crei un metodo setImage() all'interno di ImagePanel dove imposti l'immagine giusta a seconda del bottone premuto).

    A seconda della dimensione delle immagini e del fatto che sia possibile o no il ridimensionamento della finestra possono sorgere altre questioni ovviamente.

    Prova a vedere intanto se quanto ti ho suggerito può esserti utile

    P.S Ti posto un estratto utile dal regolamento per aiutare a mantenere il codice pulito e ben formattato (come quello che ho inserito):

    Formatta il codice sorgente: quando riporti il codice sorgente nel forum, questo va racchiuso nel tag [CODE ][/CODE] per poter essere leggibile (attiva la "modalità avanzata", usa il pulsante apposito - CODE - per inserire il tag di apertura, copia il codice nel messaggio e premi di nuovo il pulsante per chiudere il tag).

    P.S 2 Non prendere per oro colato quanto ti dico, faccio del mio meglio ma c'è gente moooolto più preparata di me qui
    Ultima modifica di Ansharja; 13-02-2016 a 00:09

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.