Ho creato un frame in Java2 il quale visualizza un immagine su un Jpanel, vorrei sapere come posso far comparire l'immagine al centro del frame?
Di seguito viene riportato il listato del programma:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/****************** CLASSE DI TEST **********************/
public class ImageTest{
public static void main(String[] args){
ImageFrame frame = new ImageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); //permette di chiudere il frame
frame.show(); //visualizza il frame
}//main
}//ImageTest
/******************* CLASSE CHE COSTRUISCE IL PANNELLO *******************/
public class ImageFrame extends JFrame{
/*** Costruttore ***/
/**
@requires richiede i package java.awt, java.awt.geom e javax.swing
@effects dopo aver acquisito le impostazioni ddello schermo dal sistema operativo crea un frame il quale risulterà un quarto dell'intero schermo
@return restituisce un frame pari ad 1/4 del video contenente figure geometriche
*/
public ImageFrame(){
//acquisisce le dimensioni dello schermo
// La classe Toolkit iteragisce con il sistema operativo
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize(); //restituisce la dimensione dello schermo come oggetto Dimension
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
//centra il frame nello schermo
setSize(screenWidth/2, screenHeight/2); //dimezza la larghezza ed altezza delle dimensioni del video precdentemente acquisite
setLocation(screenWidth/4, screenHeight/4); //consente di riposizionare il frame
//imposta l'icona ed il titolo del frame
Image img = kit.getImage("icon.gif");
setIconImage(img); //prende un oggetto img e lo usa come icona del frame
setTitle("Giuseppe SPECCHIO - Progetto LI4"); //imposta il titolo del frame
//aggiunge un pannello al frame
ImagePanel panel = new ImagePanel();
panel.setBackground(SystemColor.window); //imposta il colore di sfondo del frame sul colore predefinto nel sistema operativo
Container contentPane = getContentPane(); //restituisce l'oggetto pannello del contenuto del JFrame
contentPane.add(panel); //aggiunge il pannello al frame
}//ImageFrame
}//ImageFrame{}
/***************************** CLASSE CHE GESTISCE L'IMMAGINE ***************************/
public class ImagePanel extends JPanel{
/*** Variabili di Classe ***/
private Image image;
/**
@requires richiede i package java.awt, java.awt.event e javax.swing
@effects dopo aver acquisito le impostazioni dello schermo dal sistema operativo crea un frame il quale risulterà un quarto dell'intero schermo
@return restituisce un frame pari ad 1/4 del video contenente un'immagine di sfonfo
*/
public ImagePanel(){
//acquisisce l'immagine
image = Toolkit.getDefaultToolkit().getImage("Background.g if");
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 0); //aggiunge image all'elenco d'immagini da caricare
try{ tracker.waitForID(0);} //attende che siano caricate tutte le immagini con l'id specificato
catch (InterruptedException exception) {}
}//ImagePanel
public void paintComponent(Graphics g){
super.paintComponent(g);
//acquisisce le dimensioni dello schermo
// La classe Toolkit iteragisce con il sistema operativo
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize(); //restituisce la dimensione dello schermo come oggetto Dimension
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
//disegna l'immagine
g.drawImage(image, 0, 0, null); //per ottenere l'immagine al centro del frame????
}//paintComponent
}//ImagePanel{}