[Risolto]Image in jpanel

di il
20 risposte

[Risolto]Image in jpanel

Salve sto avendo dei problemini.per inserire un immagine su il panel specifico scrivo il codice sulle proprietà e uso la funzione ImageIcon giusto?....un video tutorial che sto seguendo i codici producono errori oggi ve li posto ok?...intanto se potete aiutarmi vi ringrazio saluti(perché dovrei inserire dei bottoni su un'immagine e l'unica cosa che mi viene in mente è mettere l'immagine sul jpanel e inserire i bottoni giusto?o posso fare in altro modo?)

20 Risposte

  • Re: [Risolto]Image in jpanel

    anonimo34 ha scritto:


    Salve sto avendo dei problemini.per inserire un immagine su il panel specifico scrivo il codice sulle proprietà e uso la funzione ImageIcon giusto?
    Eh no. JPanel non ha alcuna gestione di (Image)Icon di per sé.
    Precisa cosa vuoi fare. Vuoi inserire una immagine come se fosse su un componente come altri all'interno di un layout? Allora usi es. un JLabel che è in grado di visualizzare un Icon.
    Vuoi che la immagine nel JPanel faccia da "sfondo" a tutti i componenti contenuti nel JPanel? Allora va fatto diversamente con del custom-painting nel JPanel.
  • Re: [Risolto]Image in jpanel

    Ciao sì vorrei che al jpanel6 ci fosse uno sfondo è per un software odontoiatrico l'immagine di una bocca e a ogni dente devo mettere un botton.So andare sulle proprietà del jpanel ma una riga di codice semplice cosa posso mettere grazie?
  • Re: [Risolto]Image in jpanel

    anonimo34 ha scritto:


    Ciao sì vorrei che al jpanel6 ci fosse uno sfondo è per un software odontoiatrico l'immagine di una bocca e a ogni dente devo mettere un botton.So andare sulle proprietà del jpanel ma una riga di codice semplice cosa posso mettere grazie?
    Per poter avere nel JPanel una immagine di sfondo che stia "sotto" i componenti contenuti si deve fare del painting diretto nel pannello.
    - si estende JPanel, fai una classe es. MyPanel che deriva da JPanel
    - si ridefinisce il metodo protected void paintComponent(Graphics g)
    - all'interno del paintComponent come prima cosa dovresti invocare la versione "super" del paintComponent (se sei certo che la tua immagine copre tutto il pannello, lo puoi evitare)
    - poi disegni un Image con uno dei metodi drawImage del Graphics. Nota: java.awt.Image, non Icon. Un ImageIcon contiene un Image, quindi se vuoi può anche caricare un ImageIcon e poi ottenere il Image. O caricare direttamente un Image.

    Dovresti documentarti un po'. E cerca anche sul forum, se ne è parlato più volte.
  • Re: [Risolto]Image in jpanel

    Ok adesso guardo grazie ma ce la farò?.... è più difficile questo che il resto strano!
  • Re: [Risolto]Image in jpanel

    anonimo34 ha scritto:


    Ok adesso guardo grazie ma ce la farò?.... è più difficile questo che il resto strano!
    No, non è difficilissimo. Ma c'è poi anche il resto che richiede attenzione. Hai detto che vuoi mettere nel pannello dei pulsanti, presumo con delle immagini, per ciascun dente. I pulsanti li dovrai quindi posizionare in modo "assoluto" (x e y espliciti) nel pannello. E tieni presente che i pulsanti hanno molte decorazioni standard: bordo, sfondo sfumato, margini interni, ecc.. Se non li vuoi devi settare tutto questo per toglierli.
  • Re: [Risolto]Image in jpanel

    Ciao no no nessuna immagine sui pulsanti voglio farlo solo semplicissimo la grandezza dell'immagine la stabilisco io uso netbeans voglio fare un progetto semplice.Sopra il disegno e sopra ogni dente inserisco i bottoni di default di netbeans vorrei inserire un codice per background jpanel6 più semplice possibile dato che nn lo trovo su Google
  • Re: [Risolto]Image in jpanel

    Codice eseguito alla lettera da un tutorial, nel tutorial funziona e invece a me no perchè?
    
    package imagebackgrounddemo;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.ImageIcon;
    
    
    public class Demo extends javax.swing.JFrame {
    
      
        public Demo() {
            initComponents();
        }
    
     
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
    
            jPanel1 = new javax.swing.JPanel()(
    
                public void paint(Graphics g)(
    
                    ImageIcon im=new ImageIcon("denti4.jpg");
                    Image i=im.getImage();
    
                    g.drawImage(1, 0, 0, this.getSize().width, this.getSize().height, this);
    
                )
    
            );
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 400, Short.MAX_VALUE)
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 300, Short.MAX_VALUE)
            );
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );
    
            pack();
        }// </editor-fold>
    
      
      
        public static void main(String args[]) {
        
            /*
             * Set the Nimbus look and feel
             */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /*
             * If Nimbus (introduced in Java SE 6) is not available, stay with the
             * default look and feel. For details see
             * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
             */
             
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(Demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(Demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(Demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(Demo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
    
    
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                public void run() {
                    new Demo().setVisible(true);
                }
            });
        }
        // Variables declaration - do not modify
        private javax.swing.JPanel jPanel1;
        // End of variables declaration
    }
    
    Mi dice che non esiste il metodo main e invece c'è perchè?
    Come risolvo?....Se potete controllare il codice mi fareste una grande cortesia saluti
    Poi con questo codice risolvo per mettere l'immagine nel jpanel?
  • Re: [Risolto]Image in jpanel

    anonimo34 ha scritto:


    Codice eseguito alla lettera da un tutorial
    Codice che non è per niente buono ....

    anonimo34 ha scritto:


    nel tutorial funziona e invece a me no perchè?
    Ti posto un esempio appena riesco.
  • Re: [Risolto]Image in jpanel

    Ecco, giusto 2 classi, una con il main() avviabile:
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    
    public class FramePrincipale extends JFrame {
        private static final long serialVersionUID = 1L;
    
        private PannelloDenti pannelloDenti;
    
        public FramePrincipale() {
            super("Titolo finestra");
    
            pannelloDenti = new PannelloDenti();
    
            JButton buttonA = new JButton("A");
            buttonA.setBounds(20, 20, 50, 30);
    
            pannelloDenti.add(buttonA);
            add(pannelloDenti);
    
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setSize(400, 300);
            setLocationRelativeTo(null);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new FramePrincipale().setVisible(true);
                }
            });
        }
    }
    import java.awt.Graphics;
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
    
    public class PannelloDenti extends JPanel {
        private static final long serialVersionUID = 1L;
    
        private ImageIcon imgIconSfondo;
    
        public PannelloDenti() {
            imgIconSfondo = new ImageIcon(getClass().getResource("denti4.jpg"));
            setLayout(null);
        }
    
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(imgIconSfondo.getImage(), 0, 0, this);
        }
    }
    Non so che tipo di IDE/progetto hai ma fai in modo che la immagine denti4.jpg sia nello stesso package della classe PannelloDenti.

    Vedrai che il pulsante buttonA sta "sopra" la immagine di sfondo. Chiaramente è solo un esempio.
  • Re: [Risolto]Image in jpanel

    Salve grazie del codice si così funziona è solo che è per un jFrame e non per un jpanel.Provero a vedere se riesco ad integrarlo lostesso.

    secondo me dovrei mettere parte del codice "frameprincipale" nelle propietà del jpanel6, poi aggiungo la classe "PannelloDenti" nel progetto e dovrebbe andare giusto?
  • Re: [Risolto]Image in jpanel

    Niente non và non capisco, io le propietà del jpanel le apro facendo click sul jpanel e faccio "customize code" giusto?
    Per espandere jpanel in che altra maniera si fà?
    Poi da qui inserisco il codice della classe "PannelloDenti" sotto la prima impostazione ma mi dà errore.
    mmmm
  • Re: [Risolto]Image in jpanel

    anonimo34 ha scritto:


    Salve grazie del codice si così funziona è solo che è per un jFrame e non per un jpanel.
    Quello che ho scritto io è un pannello (estensione di JPanel) con la immagine in sfondo. E questo pannello l'ho messo (ovviamente) in un frame (JFrame esteso) per testarlo. Tutto qui. Non perderti nel bicchier d'acqua.

    anonimo34 ha scritto:


    Niente non và non capisco, io le propietà del jpanel le apro facendo click sul jpanel e faccio "customize code" giusto?
    Per espandere jpanel in che altra maniera si fà?
    Non uso editor "visuali" delle interfacce grafiche (scrivo tutto a mano perlomeno per Swing). Capisco che per chi inizia o sa poco è facile "smanettare" con un editor visuale piazzando di qua e di là componenti con il mouse ecc... Ma faresti molto di più se comprendessi meglio come funzionano Swing e i componenti, scrivendo tu il codice.
  • Re: [Risolto]Image in jpanel

    Si hai ragione niente da ridire su questo poi ho anche dimenticato quel poco che sapevo con il tempo uffa!...
  • Re: [Risolto]Image in jpanel

    Quindi, riassumendo, quali sono i dubbi/problemi, pur con l'esempio postato da me?
Devi accedere o registrarti per scrivere nel forum
20 risposte