GUI - jpg som baggrund for tråd-diagram og anden grafik
Jeg arbejder på en transportopgave (java-valgfag...), hvor man optimerer en kørselsrute til en opgave.Grafisk ønsker jeg et Danmarkskort (jpg) som baggrund, og oven på dette vil jeg gerne lave mine byer = \"knudepunkter\" og vejene, der forbinder dem.
Forhåbentligt når jeg også at få lavet en animation, hvor jeg flytter små gif\'er mellem byerne, illustrerende lastbiler osv...
Men jeg kan ikke få jpg\'en ind som baggrund. Aner ikke hvordan - har aldrig prøvet GUI før...
Så før jeg går videre med et udsnit af min kode: Hvordan skal jeg gøre dette? Altså have lag-på-lag-billeder?
Jeg har et knudepunktPanel (JPanel) som indeholder et array af knudepunkter(byer). Hver by kan tegne sig selv, samt streger til de byer der er veje til.
---
By-objekt: (construktor)
public By(Knudepunkt knudepunkt) {
this.x = knudepunkt.getXKoordinat();
this.y = knudepunkt.getYKoordinat();
radius = knudepunkt.getStørrelse();
description = knudepunkt.getDescription(); //Bynavnet
color = Color.blue;
destinationer = knudepunkt.getDestinationsListe(); //array af knudepunkter
}
---
og tegner den med:
---
public void paint(Graphics g) { //By.java - paintmetoden
g.setColor(color);
g.fillOval(x, y, 2 * radius, 2 * radius);
g.drawString(description, (x+5), (y+4));
g.setColor(Color.black);
for (int i=0; i<destinationer.length && destinationer[i] != null;i++){
g.drawLine(x+2,y+2,destinationer[i].getX()+2,destinationer[i].getY()+2);
}
}
Billedet har jeg kun formået at læse ind i en JLabel , konstruktet med et Icon-objekt
---
private Icon dk = new ImageIcon(\"dkSmall.jpg\");
private JLabel danmarkskort = new JLabel(dk);
---
Ovenstående JLabel og JPanel ville jeg så gerne have haft oven i hinanden...
Mit forsøg har gået på at bruge en frame med getContentPane().add(\"Center\", knudepunktPanel)
getContentPane().add(\"Center\", danmarkskort) - hermed håbede jeg naivt at jeg kunne arrangere mine lag.
Jeg ser de 2 lag ved siden af hinanden, hvis fx. danmarkskort sættes til \"West\".
Er der en langt nemmere måde...?
/Søren
