/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Problemer med Image og getWidth( ), img.ge~
Fra : Poul C


Dato : 07-07-03 16:27

Hej gruppe

Jeg håber at nogen har tid/lyst til at hjælpe mig trods sommervarmen

Det drejer sig om Image og getWidth( ), img.getHeight( ) der ikke rigtig
virker:

(Kodeeksempel nedenfor)

Jeg skal bruge 8 paneler med hver et billede + tekster samt inputfelter:

mitPanel extender Panel og tilføjer bl.a. en hævet kant, Desuden indeholder
det et billede,
som man er nødt til at placere på en sub-klasse af Canvas (se kommentaren
nedenfor)

Min test-Applet opretter - for nemheds skyld - 8 Paneler med samme billeder
+ samme tekst m.v. (Den aktuelle tilstand vil naturligvis senere blive
overført som parametere)


Problemet opstår med den instans af picCanvas jeg ønsker at skabe
Bruger jeg:

picC = new picCanvas(pic,0,0,pic.getWidth(this), pic.getHeight(this));

kun een gang, så bliver de 7 sidste paneler skabt helt OK med billede tekst
osv.
Men første panel mangler billedet.

Hvorfor?

Udfører jeg:
picC = new picCanvas(pic,0,0,pic.getWidth(this),
pic.getHeight(this));
picC = new picCanvas(pic,0,0,pic.getWidth(this),
pic.getHeight(this));

altså to gange lige efter hinanden, ja så er første panel også OK!

Vælges enten mulighed 1 el. 2 (se koden) virker det også.

Bemærk: mulighed 1 har jeg gjort helt grotesk, men den virker stadig!!!
(pic-pointeren er null og bredde og højde er ganget med 0)

Selv tror jeg at det har noget at gøre med at der ikke er skabt en konkret
instans af img på dette tidspunkt.
Image er i øvrigt også en abstrakt klasse, så der kan ikke skabes
instanser!!!

Hvad gør jeg??



//--------------------------------------------------------------------------
----------------------------

import java.awt.*;

public class picCanvas extends Canvas {
// Der er to begrundelser for at bruge et Canvas for at placere et billede
i et panel:
// 1) setSize / resize m.v. virker ikke på Panel
// 2) placeres (=tegnes) billedet direkte på panelet (overskrive paint)
virker det kun som baggrund og componenter vil derfor placeres ovenpå billed
et!

Image img;


public picCanvas(Image pic, int x1,int y1, int x2,int y2) {
img = pic;
setBounds(x1,y1,x2,y2);
setBackground (new Color(53,243,179));
}

public picCanvas(Image pic) {
img=pic;
setBounds(0,0,img.getWidth(this), img.getHeight(this));
setBackground (new Color(53,243,179));
}

public void paint( Graphics g) {
g.drawImage(img, 0, 0, this);
}

}

//--------------------------------------------------------------------------
----------------------------
import java.awt.*;

public class mitPanel extends Panel {
public picCanvas picC;
public Label l1,l2,l3,l4;
public TextField input1,input2;

protected Insets insets = new Insets(3,3,3,3);

public mitPanel(Image pic) {
this.setLayout( new BorderLayout() );
l1=new Label("Aflæs skæringspunkt"); add(l1,BorderLayout.NORTH);

// picC = new picCanvas(null,0,0,pic.getWidth(this)*0,
pic.getHeight(this)*0); // = mulighed 1
int a=pic.getWidth(this), b=pic.getHeight(this); // = mulighed 2

picC = new picCanvas(pic,0,0,pic.getWidth(this), pic.getHeight(this));
add(picC,BorderLayout.CENTER);

Panel inputPanel = new Panel();
l2=new Label("( "); inputPanel.add(l2);
input1 = new TextField(3);inputPanel.add(input1);
l3=new Label(" , "); inputPanel.add(l3);
input2 = new TextField(3);inputPanel.add(input2);
l4=new Label(" )"); inputPanel.add(l4);
add(inputPanel,BorderLayout.SOUTH);
}

public void setPanelInsets(Insets insets) { this.insets =
insets; }
public Insets insets() { return insets; }

public void paint(Graphics g) {
super.paint(g);
int width=size().width-1,height=size().height-1;
g.setColor(Color.darkGray);
g.drawLine(0,height,width-1,height);g.drawLine(width,0,width,height);
g.setColor(Color.gray);

g.drawLine(0+1,height-1,width-2,height-1);g.drawLine(width-1,0+1,width-1,hei
ght-1);
g.setColor(Color.white);
g.drawLine(0,0,0,height-1);g.drawLine(0,0,width-1,0);
}

}
//--------------------------------------------------------------------------
----------------------------
import java.awt.*;
import java.applet.*;

public class myPanelApplet extends Applet {

public mitPanel[] qP =new mitPanel[8];

Image background;


public void init() {
background = getImage(getCodeBase(), "Koor.jpg");
setLayout(new GridLayout(2,4)); setBackground (Color.black);
addNotify();
for (int i=0; i<8;i++) {
qP[i]=new mitPanel(background);
qP[i].setLayout(new FlowLayout(FlowLayout.CENTER));
qP[i].setBackground (new Color(253,243,179));
add(qP[i]);
}
}

public boolean handleEvent(Event evt) {
switch (evt.id) {
case (Event.ACTION_EVENT):
if(true )//evt.target == btn1)
{ //System.out.print("Du klikkede buttum
btn1");
}
break;
default : break;
}
return true;
}
}


//--------------------------------------------------------------------------
----------------------------



 
 
Ulrik Magnusson (07-07-2003)
Kommentar
Fra : Ulrik Magnusson


Dato : 07-07-03 19:36



Poul C wrote:

> Hej gruppe
>
> Jeg håber at nogen har tid/lyst til at hjælpe mig trods sommervarmen
>
> Det drejer sig om Image og getWidth( ), img.getHeight( ) der ikke rigtig
> virker:

Kig evt. på java.awt.MediaTracker

Ulrik Magnusson


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408193
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste