[Java] Superposer Image par dessus un Label

Résolu/Fermé
mickesp - 22 nov. 2005 à 23:06
Dee_carpenter
Messages postés
1
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
11 août 2009
- 11 août 2009 à 21:06
Bonjour à tous,
je suis à la programmation d'un jeu de serpents et échelles en JAVA. Ma question est simple: Comment est ce que je fait pour superposer des images par dessus des Labels?

J'ai mon fond qui est créé par une boucle For qui m'affiche mes 100 Label. Cela me cré ma planche de jeu.
Et par dessus cette plache de jeu, je veux mettre mes serpent et mes échelles, qui sont des images .gif.
Donc, comment je m'y prend? Avec JLayeredPane , si oui de quelle manière?

Merci d'avance

4 réponses

HackTrack
Messages postés
618
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
13 juillet 2013
970
23 nov. 2005 à 11:37
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/*
 * Created on Nov 23, 2005
 *
 */

/**
 * @author HackTrack
 *
 */
public class ImageOverLabel extends JFrame {

	public ImageOverLabel() {
		super("Démo d'image sur Label");
		initialize();
	}

	private void initialize() {
		Container c = getContentPane();
		JLabel label = new JLabel();
		label.setBackground(Color.BLUE);
		ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().getImage("c:/test.jpg"));
		label.setPreferredSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
		label.setIcon(image);
		c.add(label);
	}

	public static void main(String[] args) {
		ImageOverLabel demo = new ImageOverLabel();
		demo.pack();
		demo.setVisible(true);
	}
}


;-)
HackTrack
5
Hey merci beaucoup Hacktrack,
toi tu connais ça.
Vive les forums et le monde intelligent.
0
Dee_carpenter
Messages postés
1
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
11 août 2009

11 août 2009 à 21:06
salut,
j'ai lu ton code pour la solution que tu preposes pour inserer une image dans un JLabel avec l'instruction :
JLabel.setPreferredSize(new Dimension(ImageIcon.getIconWidth(),ImageIcon.getIconHeight()));
...est-ce que tu as une idée sur ce qu'il faut faire pour avoir l'inverse. c'est à dire redimensionner l'image pour qu'elle rentre dans les dimensions fixes du JLabel.
Merci.
0
Bonjour :

S'il vous plait je suis entrin de préparer une application pour mon stage,mon problème : je veux superposer des composants sur une image (définie comme fond d'un JPanel).En d'autres termes j'ai crée une JFrame dans laquelle j'ai crée un JPanel ayant comme fond une image,sur ce meme JPanel je veux ajouter des boutons et des labels.

C'est bon pour l'image,ça marche,mais les composants n'apparaissent qu'en survolant la fenetre avec souris et disparaissent en surdimensionnant la fenetre ?!?!?!?!?

S'il vous plait aidez moi ...........

Merci d'avance ;) .
1
jcodeunpeu
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006
6
23 nov. 2005 à 03:45
bonjour,
j'ai vu quelquechose qui y ressemble par ailleurs :
http://www.javafr.com/forum.v2.aspx?ID=605046
peut-être que tu peux transposer ?
A++
0
Bonjour
je veux lire à partir d`un fichier son contenu qui est sous forme d`un entier par ligne jusqu`à 81,et puis afficher ce contenu dans une interface sous forme de tableau de JLabel de deux dimensions.mon code m`affiche une interface vide que je ne sais pas pourquoi. j`ai vraiment besoin d`une réponse.merci d`avance

public class Interface extends JFrame {
//public Grid gridd ;
static JLabel cell[][]=new JLabel [9][9];
int i;
int j;
int k=0;
RandomAccessFile rd;


public Interface() throws Exception
{
setSize(150,300);
setTitle("SUDOKU");

setLocation(250,500);
setBackground (Color.yellow);
getContentPane().setLayout(new FlowLayout());
String val[] = getValues();


if(val.length!=81)

{
System.exit(0);
}


for(int h=0;h<81;h++)

{
if(Integer.parseInt(val[h])<0);
{
System.exit(0);
}

}

for (int i=0; i<9; i++)
{

// read() lit le prochain caractère du flux (retourne un int car c'est sur 16 bits).
//Utilise read(char cbuf[], int off, int len).
for(int j=0;j<9;j++)

{ //les cellules donnees
//cells[i][j]=ch-(int)'0';
// cell[i][j]=new JLabel("+ch-(int)'0'");

if(val[k]!="0")
{
cell[i][j].setText(val[k]);
}
else
{cell[i][j].setText("");}
k++;
add(cell[i][j]);
}
}

setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

}









String[] getValues() throws Exception
{
rd = new RandomAccessFile("C:\\testGrid.txt", "r");
String vals[]=new String [81];
// BufferedReader entree = new BufferedReader (new FileReader ("C:\\testGrid.txt") );
//on se positionne à la dernière ligne
rd.seek(0);
for(int o=0;o<81;o++)
{
vals[o] = rd.readLine();
}
rd.close();
return vals;
}




}
0