Avatar billede sbhansen Nybegynder
06. december 2001 - 13:27 Der er 1 løsning

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
Avatar billede sbhansen Nybegynder
08. februar 2002 - 23:19 #1
det var ikke den store respons - fjolset må have formulleret sit spørgsmål for dårligt! :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester