Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    25

    [java] Immagini e bottoni awt

    Ciao a tutti, ho un piccolo problema e per quanto mi sforzi non riesco a trovare una spiegazione/soluzione.
    Sono riuscito a caricare delle immagini da un jar con l'oggetto Toolkit, il problema,penso, è quando richiamo l'oggetto ImageButton entra nel costruttore ma non riesce a recuperare le dimensioni delle immagini caricate.

    codice:
        protected void init() {
            setSize(300,200);
            addWindowListener( new WindowAdapter() {
                public void windowClosing( WindowEvent we) {
                    System.exit(0);
                }
            });
            
            Image[] imgp = new Image[4];
            Container contentPane = getContentPane();
            JPanel p = new JPanel();
    
            for(int i=0; i<4; i++) {
                imgp[i] = Toolkit.getDefaultToolkit().createImage("it/praioz/image/babydonald0"+(i+1)+".gif");
            }
    
            for(int i=0; i<4; i++) {
                System.out.print("imgp["+i+"] = " +imgp[i]);
                System.out.println(" imgp["+i+"].getWidth(this) = " +imgp[i].getWidth(this) +"imgp["+i+"].getHeight(this)= "+imgp[i].getHeight(this) );
            }
            
            ImageButton imgButton = new ImageButton(imgp);
            Button button = new Button("pippo");
            
            ModelloTabella modello = new ModelloTabella();
            JTable tabella = new JTable(modello);
            JScrollPane scroll = new JScrollPane(tabella);
    
            p.add( imgButton );
            p.add( button );
            p.setOpaque(true); 
            contentPane.add(p, "North");
            contentPane.add(scroll, "Center");
            pack();
            doLayout();
        }
    qui sotto c'è la classe relativa alla costruzione del mio bottone


    codice:
    class ImageButton extends Button implements MouseListener {
        
        Image[] img;
        int select = 1;
        int width = 0;
        int height = 0;
        int imgWidth, imgHeight;
        
        public ImageButton(Image[] image) {
            super(" ");
            img = new Image[4];
            img = image;
            imgWidth = img[0].getWidth(this);
            imgHeight = img[0].getHeight(this);
            setSize(imgWidth, imgHeight);
            addMouseListener(this);
        }
        
        public Dimension getPreferredSize() {
            return new Dimension(imgWidth, imgHeight);
        }
        
        public Dimension getMinimumSize() {
            return new Dimension(imgWidth, imgHeight);
        }
        
        public void setBounds(int x, int y, int width, int height) {
            this.width = width;
            this.height = height;
            super.setBounds(x, y, this.width, this.height);
        }
        
        public void setSize(int width, int height) {
            this.width = width;
            this.height = height;
            super.setSize(this.width, this.height);
        }
        
        public void setEnabled(boolean enable) {
            
            if( enable )
                select = 1;
            else
                select = 0;
            
            repaint();
            super.setEnabled(enable);
        }
        
        public void paint(Graphics g) {
            
            g.drawImage(img[select], 0, 0, width, height, this);
            
        }
        
        public void mouseClicked(MouseEvent e) { }
        public void mouseEntered(MouseEvent e) {
            if(select != 0) {
                select = 2;
                repaint();
            }
        }
        
        public void mouseExited(MouseEvent e) {
            if(select != 0) {
                select = 1;
                repaint();
            }
        }
        
        public void mousePressed(MouseEvent e) {
            if(select != 0) {
                select = 3;
                repaint();
            }
        }
        
        public void mouseReleased(MouseEvent e) {
            if(select != 0) {
                select = 2;
                repaint();
            }
        }
        
    }
    un grazie a chiunque voglia aiutarmi!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Quello che non mi torna è l'istruzione
    codice:
    Container contentPane = getContentPane();
    Questa è un'istruzione che viene utilizzata quando si fa uso di oggetti Swing e non AWT.
    Se stai utilizzando degli oggetti Swing, allora il problema potrebbe essere dato dall'utilizzo
    promisquo di componenti AWT e componenti Swing: mai mescolarli, altrimenti gli effetti
    potrebbero essere indesiderati!!

    Per il resto non ho notato, a prima vista, incongruenze... in questo momento non ho modo
    di testare il tuo codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    perché fai

    imgWidth = img[0].getWidth(this);
    imgHeight = img[0].getHeight(this);

    ?

    Prova a sostituire quei this con 2 null.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da Andrea1979
    perché fai

    imgWidth = img[0].getWidth(this);
    imgHeight = img[0].getHeight(this);

    ?

    Prova a sostituire quei this con 2 null.
    Lo fa perchè il parametro richiesto da getWidth() e getHeight() è un oggetto di tipo ImageObserver. Button implementa questa interfaccia, quindi va benissimo così.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.