Gå til innhold

Problemer med center stilling i JAI


Anbefalte innlegg

		private String fileName ;

private PlanarImage srcImage;
private DisplayJAI srcdj;

private JFrame frame;

//Konstruktør
public ImageHandler (JFrame frame){

	this.frame = frame;
	fileName = "src/icon/test.jpg";
	try{
		srcImage = JAI.create("fileload",fileName);
	}catch(IllegalArgumentException e){
		System.out.println(e.getMessage());
		OpenFile OF = new OpenFile();
		fileName = OF.getFile().getAbsolutePath();
		srcImage = JAI.create("fileload",OF.getFile().getAbsolutePath());
	}

	srcdj = new DisplayJAI(srcImage);

	frame.add(srcdj,BorderLayout.CENTER);
	frame.setSize(getWidth()+50, getHeight()+50);
	frame.setTitle("Bilde Butikk - " + fileName);
	frame.setVisible(true);

}

 

Programme kjører så si feilfritt, men har problemmer med at "srcdj" ikke vil legge seg mitt i frame'en min(Se vedlagt bilde). (Noe jeg trodde BorderLayout.CENTER, skulle fikse for meg)

 

Noen som har noen tips til hvordan jeg kan løse dette på best mulig måte?

post-150551-1266938480,8616_thumb.png

Endret av Kargan
Lenke til kommentar
Videoannonse
Annonse

Du må vel enten sette BorderLayout eller bruke ContentPane for å kunne benytte BorderLayout om ikke jeg tar helt feil?

 

http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html

The following code adds components to a frame's content pane. Because content panes use the BorderLayout class by default, the code does not need to set the layout manager.

 

Er det ikke det jeg gjør her da ?

 

frame.add(srcdj,BorderLayout.CENTER)

Lenke til kommentar

Både i kode eksempelet på java.sun.com sine sider, og på det "fullstendige kodeeksempelet" så benytter de ContentPane for å sette borderLayout.

 

Så dersom du ikke får det til å fungere med noe annet ville jeg ihvertfall prøve å bruke det for å se om det gjør noen forskjell. Koden ville da se slik ut

 

Container pane = frame.getContentPane();
pane.add(srcdj,BorderLayout.CENTER);
frame.pack();
frame.setSize(getWidth()+50, getHeight()+50);
frame.setTitle("Bilde Butikk - " + fileName);
frame.setVisible(true);

Endret av Cemi
Lenke til kommentar

Det vil jeg tro er fordi kodeeksemplene er utdaterte.

Det at man kan gjøre ting som å legge til elementer direkte på JFrame kom i senere utgaver av Java.

 

pane.add(srcdj, BorderLayout.CENTER) setter ikke BorderLayout, men sier til panelet at den skal vise det elementet sentrert om den er satt til BorderLayout.

Man setter et panel til BorderLayout sånn her:

pane.setLayout(new BorderLayout())

 

men hvis du kjører denne koden her

JFrame fr = new JFrame();
System.out.println(fr.getLayout());

så vil du se at den er satt til BorderLayout fra før av.

Lenke til kommentar

JFrame sin standard LayoutManager er BorderLayout, så man trenger ikke å sette den.

 

Du kan prøve å bruke FlowLayout:

frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.add(srcdj);

 

Fiksa det nesten, den er ikke helt center silt. Ser ut som en kombinasjon av .NORTH og .CENTER

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...