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);
}
}
