Avatar billede nielyng Nybegynder
08. februar 2004 - 18:12 Der er 1 kommentar og
1 løsning

JLabels ovenpå et billede?

Hej Gutter!

Jeg har et lille problem, som højst sandssynligt bunder i min mangel på layoutmanager eller noget lignende.

Jeg har en klasse, der genererer et JPanel, som bliver vist i et vindue. Dette JPanel indeholder noget grafik, som udgør baggrunden i vinduet.

Så er problemet imidlertid, at når jeg vil lægge en JLabel ovenpå billedet bliver baggrunden grå, og billedet kan ikke længere ses. :-(

-------------------------------PersonGrafik.Java-----------------

import javax.swing.*;
import java.awt.*;

/**
* @author Nilez
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class PersonGrafik extends JFrame{
    private Person person;
    private JPanel contentPane;
    private JLabel kode;
    private MyImage grafik;
    public PersonGrafik(Person p){
        person = p;
        contentPane = (JPanel) this.getContentPane();
        //contentPane.setLayout(null);
        //this.getContentPane().setBackground(new Color(39, 185, 200));
        this.setResizable(false);
        this.setSize(new Dimension(618, 350));
        //contentPane.setLayout(null);
        this.setTitle("............-=Person=-.........");
        grafik = new MyImage("plade.jpg", new Dimension(611,322), contentPane);
        contentPane.add(grafik);
        //kode = new PladePanel(person);
        //kode.setOpaque(true);
        kode = new JLabel(person.getKode());
        kode.setBounds(new Rectangle(0, 0, 0, 0));
        //kode.setForeground(new Color(255,255,255));
        kode.setOpaque(true);
        //kode.setBackground(new Color(0,0,0));
        //contentPane.add(kode);
        contentPane.setPreferredSize(new Dimension(611, 322));
    }

    public static void main(String[] args) {
   
    }
}

---------------------------------Person.java-------------
public class Person {
private String kode;
public Person(String s){
kode = s;   
}

    public static void main(String[] args) {
    }
/**
* @return Returns the kode.
*/
public String getKode() {
    return kode;
}

/**
* @param kode The kode to set.
*/
public void setKode(String kode) {
    this.kode = kode;
}

}

------------------------MyImage.java-----------------------------

import java.awt.*;
import javax.swing.*;

/**
* @author Nilez
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class MyImage extends JPanel {

    private Image image;
    public MyImage(String path, Dimension size, Component component) {
       
        image =
            component.getToolkit().getImage(path).getScaledInstance(
                size.width,
                size.height,
                Image.SCALE_SMOOTH);

        add(new JLabel(path));
        System.out.println(path);
       
    }

    public void paint(java.awt.Graphics g) {
        Graphics2D graphics2D = (Graphics2D) g;
        graphics2D.drawImage(image, 0, 0, this);
    }
}


-----------------------Test.java--------------------------

public class Test {

    public static void main(String[] args) {
        Person p = new Person("Hallo!");
        PersonGrafik pg = new PersonGrafik(p);
       
    }
}
Avatar billede _carsten Nybegynder
08. februar 2004 - 20:30 #1
Så vidt jeg husker, burde dette være løsningen

    public void paint(java.awt.Graphics g) {
        Graphics2D graphics2D = (Graphics2D) g;
        graphics2D.drawImage(image, 0, 0, this);
        paintChildren(g);
    }

Men - jeg har hverken testet din kode eller mit eget forslag !!
Avatar billede nielyng Nybegynder
08. februar 2004 - 20:44 #2
Suverænt, det virker som det skal!! Hurrra-hurra!
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