omcougar
Messages postés152Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention 8 octobre 2008
-
29 juin 2005 à 12:35
safisoft
Messages postés489Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention13 mai 2009
-
29 juin 2005 à 15:05
Bonjour,
J'implore par avance le pardon de tous ceux qui vont trouver ma question stupide, mais j'ai beaucoup de mal à encpasuler les grids,panel,images etc....
J'ai fait un petit applet pour m'amuser et surtout comprendre comment enbcapsuler 2 border layout l'un dans l'autre et une image au centre
J'ai fini par m'en sortir en ce qui concene l'enpilement des BorderLayout, mais je ne trouve pas le moyen de mettre mon image dans le "Center" du second BorderLayout
Voici mon code (qui est faux) mais qui vous aidera a comprendre ce que je veux faire... par pitié aidez moi !!!
import java.awt.*;
public class Border2 extends java.applet.Applet implements Runnable{
BorderLayout Bord_A= new BorderLayout();
BorderLayout Bord_B= new BorderLayout();
Panel pane=new Panel();
}
public Border2() {
Thread tr = new Thread(this);
tr.start();
}
public void run(){
while (true) {
repaint();
}
}
public void update(Graphics g){paint(g);}
public void paint(Graphics gsp){
gsp.drawImage(imgTmp,0,0,this);
}
}
A voir également:
2 BorderLayout + 1 image... ca fait trop pour moi :(
vers la fonction paint() et ca marche ... je ne sais pas pourquoi ni si c'etait la meilleure solution mais bon :) je vous remercie 1000000 fois pour votre aide.
safisoft
Messages postés489Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention13 mai 20096 29 juin 2005 à 14:05
le pbm c'est que Image ne descend pas de "Component" alors pour ce faire tu pe créer ton propre Component Image:
class MonImage extends java.awt.Canevas{
Image img;
public MonImage(String Path){
img=createImage(1000, 400); //normalement ton image tu dois la construire à partir d'un path (fichier image gif, jpg)
this.setBounds(........); //tu pe te baser sur les dimensions de img
}
public void paint(Graphics g){
g.drawImage(img,0,0,this);
}
}
et pour ta classe principale je sé pas si t'as vraiment besoin d'inserrer des "Button" sinon u pe inserer des canvas ou des Panel et fixer leurs dimensions. pour l'image tu met tous simplement:
omcougar
Messages postés152Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention 8 octobre 20081 29 juin 2005 à 14:27
C'est vrai qu'il est stupide de totu vouloir faire dans la meme class...
Pour répondre aux questions plus haut, la présence de boutons est juste la pour simuler d'autres éléments d'une interface.
En fait d'image, c'est plutot un graphique que j'essaie de mettre au milieu
Voila comment j'ai modifié mon prog....
Tout s'affiche sauf le graphique avec le rond et le trait ...
Classe principale Border2.java
import java.awt.*;
public class Border2 extends java.applet.Applet implements Runnable{
BorderLayout Bord= new BorderLayout();
Dessin mon_affichage=new Dessin();
public void init(){
setLayout(Bord);
add("North", N1);
add("South", S1);
add("East", E1);
add("West", O1);
add("Center", mon_affichage);
}
public Border2() {
Thread tr = new Thread(this);
tr.start();
}
public void run(){
while (true) {
mon_affichage.repaint();
}
}
}
Classe Dessin qui se limite a dessine un rond et un trait
import java.awt.*;
public class Dessin extends Canvas{
Image imgTmp;
Graphics gTmp;
public void init(){
imgTmp = createImage(200, 200);
gTmp = imgTmp.getGraphics();
setBackground(Color.black);
}
public void paint(Graphics g){
gTmp.setPaintMode();
gTmp.setColor(Color.white);
gTmp.fillOval(1,1,100,100);
gTmp.setColor(Color.red);
gTmp.drawLine(1,1,1000,1000);
g.drawImage(imgTmp,0,0,this);
}
}
safisoft
Messages postés489Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention13 mai 20096 29 juin 2005 à 14:38
ecoute le constructeur d'une classe est une methode qui a pas de retour et quia le nom de la classe alors tu remplace "public void init()" dans la classe Dessin par "public Dessin()" c'est pas comme une applet
omcougar
Messages postés152Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention 8 octobre 20081 29 juin 2005 à 14:48
Effectivement, DSL d'etre aussi mauvais, mais il y a "quelques" notions qui m'echappent ;)
J'ai corrigé le tire mais ca râle encore beaucoup... en premier lieu sur le " gTmp = imgTmp.getGraphics(); " de mon constructeur.
import java.awt.*;
public class Dessin extends Panel{
Image imgTmp;
Graphics gTmp;
public Dessin(){
imgTmp = createImage(200, 200);
gTmp = imgTmp.getGraphics();
setBackground(Color.black);
}
public void paint(Graphics g){
gTmp.setPaintMode();
gTmp.setColor(Color.white);
gTmp.fillOval(1,1,100,100);
gTmp.setColor(Color.red);
gTmp.drawLine(1,1,1000,1000);
g.drawImage(imgTmp,0,0,this);
}
}
java.lang.NullPointerException
at Dessin.(Dessin.java:7)
at Border2.(Border2.java:4)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)