View Full Version : [JAVA]Come si inserisce un immagine come sfondo? ;(
alessia86
29-08-2009, 09:20
Salvee...sto impazzendo..non riesco ad inserire un immagine come sfondo..Sto creando un videogioco..e vorrei fare la schermata iniziale che ha come sfondo un immagine e poi sopra metto la scritta ed i vari bottoni..
Io ho creato un frame..in esso ho aggiunto un jpanel e poi imposto l'immagine..ma non la mette a schermo intero..Qualcuno saprebbe darmi qualche dritta?:muro:
Grazieeeeee
Puoi disegnarla sullo sfondo di un JPanel personalizzato:
import java.awt.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
start();
}
});
}
private static void start() {
final Image image = new ImageIcon("x:\\earth.jpg").getImage();
JPanel panel = new JPanel() {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
}
};
panel.setPreferredSize(new Dimension(image.getWidth(null), image.getHeight(null)));
JFrame window = new JFrame("Test");
window.add(panel);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
}
}
Sfondo a parte "panel" è un normalissimo JPanel quindi puoi impostare un layout, aggiungere i componenti eccetera. Tieni conto che se i componenti che aggiungi a panel sono opachi allora l'immagine risulterà in tutto o in parte coperta dal contenuto del pannello. Per rendere trasparente lo sfondo dei componenti aggiungi al pannello usi il metodo setOpaque(false) su ciascuno dei componenti aggiunti.
alessia86
29-08-2009, 13:28
Grazie tantissimooooo...almeno qst sono riuscita a farlo..Ancora manca qualcosina ed il gioco è completo..Grazi grazie :)
alessia86
29-08-2009, 13:54
Ho aggiunto dei JButton che sono rappresentati da un immagine ...Ora ho ad es il bottone gioca..cosi ho fatto gioca.setOpaque(true);
Però lo sfondo non lo rende invisibile.. :confused:
gioca.setOpaque(true) rende lo sfondo del componente gioca opaco, gioca.setOpaque(false) lo rende trasparente.
Lo sfondo è solo una parte di un componente: ad esempio per un JButton standard tra un opaco e un non opaco la differenza non si nota neanche.
Se vuoi far sparire il pulsante devi usare setVisible(false).
Se per il pulsante usi delle icone che realizzano integralmente l'aspetto del pulsante stesso allora devi usare:
gioca.setOpaque(false);
gioca.setBorder(null);
gioca.setContentAreaFilled(false);
gioca.setText("");
alessia86
29-08-2009, 14:28
Ho usato i metodi che mi hai dato e adesso i bottoni sono proprio come li volevi...appare solo l'immagine che deve visualizzare il bottone :D
Sai pure se c'è qualche metodo che al passaggio del mouse sul bottone ..qst si illumina...Io ho pensato d'implementare il metodo mouseEntered della classe MouseListener..però non ho trov nulla che lo illumina o che cmq fa un effetto grafico :confused:
Quando rimpiazzi totalmente l'aspetto di un pulsante perdi tutti gli effetti predefiniti - nel nostro caso l'effetto è stato rimosso per via del setBorder(null).
La soluzione che si adotta è la creazione di una seconda icona per il pulsante che identifica appunto lo stato di attività del pulsante.
Una volta che hai creato questa seconda icona la associ al pulsante con:
setRolloverIcon(icona);
A quel punto Swing gestisce automaticamente il passaggio alla seconda icona ogni volta che il mouse entra nell'era del pulsante.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.