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

    Problema semplice riguardo Swing

    Salve, sono nuovo in questo forum. Ho scritto un mini-programma che dovrebbe visualizzare una JFrame contenente un JPanel dove sarà disegnata un' immagine (il file "1.jpg" nella stessa cartella del progetto). Avviando il programma tramite Prompt non viene disegnata l'immagine(con bluej invece sì).
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    Codice PHP:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class 
    Ex {
        public static 
    void main(String[] args) {
            
    JFrame frame = new JFrame("Frame di prova");
            
    frame.setVisible(true);
            
    frame.setSize(640,480);
            
            
    Image img Toolkit.getDefaultToolkit().getImage("1.jpg");
            
    MyComp mycomp = new MyComp(img);
            
            
    frame.add(mycomp);
            
            
        }

    }

     

     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class 
    MyComp extends JComponent {
        private 
    Image img;
        public 
    MyComp(Image img) {
            
    super();
            
    this.img img;
        }
        public 
    void paint(Graphics g) {
            
    g.drawImage(img,0,0,this);
        }


  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Il programma è corretto, ovviamente se le due classi e gli import sono separati in due file diversi... se sono nello stesso file devi eliminare gli import prima della classe MyComp.

    Evidentemente hai problemi nel caricamento dell'immagine, forse perché non è nella stessa cartella dei sorgenti. Prova a specificarne il percorso completo come argomento di getImage().

    E comunque java ha un suo sottoforum dedicato. Mi sa che è meglio se si mette in maggiore evidenza in qualche modo sto fatto
    every day above ground is a good one

  3. #3
    Della sezione me ne sono accorto stupidamente dopo. Ovviamente le due classi sono in due file (essendo pubbliche mi avrebbe dato un errore);sia le classi che 1.jpg si trovano nel CLASSPATH. Comunque grazie ho risolto (N.B. Nella stringa del percorso dell' immagine devo scrivere: "MiaCartella/File" e non "MiaCartella\File" come accade di solito in Win). Esiste una variablie nel JDK che punti il CLASSPATH?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da luca.capizzi
    Esiste una variablie nel JDK che punti il CLASSPATH?
    Si chiama, guarda un po', CLASSPATH.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Non intendevo variabile di sistema, ma sfruttabile nel codice(non penso che esisti CLASSPATH +"1.jpg"). Ho modificato la classe Ex( per fare in modo che nel JPanel venga vista solo l' immagine e che la dimensione del frame sia ottimizzata) come segue:
    Codice PHP:
    public class Ex {
        public static final 
    String classPath "C:/Users/Luca/Java/";
        public static 
    void main(String[] args) {
            
    JFrame frame = new JFrame("Frame di prova");
            
    frame.setVisible(true);
            
    frame.setSize(640,480);
            
    frame.setResizable(false);
            
            
    Image img Toolkit.getDefaultToolkit().getImage(classPath "fiore.jpg");
            
    MyComp mycomp = new MyComp(img);
            
            
    frame.add(mycomp);
            
    adattaFrame(frame,img);
            
        }
        public static 
    void adattaFrame(JFrame frame,Image img){
            
    int screenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
            
    int screenHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
            
            
    frame.setSize((int)img.getWidth(frame),(int)img.getHeight(frame));
            
            if(
    img.getWidth(frame)>screenWidth)
                
    frame.setSize(screenWidth,frame.getHeight());
            
            if(
    img.getHeight(frame)>screenHeight)
                
    frame.setSize(frame.getWidth(),screenHeight);
        }

    Sta volta avviando con bluej il frame si ridimensiona, mentre col prompt no...

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.