Ich versuche derzeit eine einfache Animation in Java zu realisieren. Ich habe ein Panel, in dem ich ein BufferedImage drucken möchte. Ich stelle den Bildort an einem Punkt ein und stelle seine Abmessungen ein.Java Swing: Grafische Komponente erscheint nur in der oberen linken Ecke Zone
Es ist jedoch so, als würde ich die "Druckzone" meines Bildes oben links mit seinen Abmessungen platzieren, und nur der Teil meines Bildes, der zu dieser Druckzone gehört, wird gezeichnet, wie Sie auf der folowing Bild:
ich denke, es propably eine grundlegende Dinge ist mir fehlt aber ich kann keine Antwort entsprechend meinem Problem finden, und ich bin ein beginer in Java so ..
Hier die ist Teil meines Codes, der sich auf dieses Problem bezieht:
public abstract class ObjetAnime extends JPanel{
protected Point location;
protected Dimension dim;
protected BufferedImage picture;
ObjetAnime(ObjetsPropriete objetProp)
{
location = new Point(10,10);
dim = objetProp.getDimension();
try {
picture = ImageIO.read(new File(objetProp.getPath()));
} catch (IOException e1) {
e1.printStackTrace();
}
this.setSize(dim);
this.setLocation(location);
this.setLayout(null);
this.setOpaque(false);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
if (picture != null) {
g.drawImage(picture, location.x, location.y, this);
}
}
Und in der Superklasse I haben:
public ListeObjets(GConfig gconfig, GPanel jeuPanel)
{
setListeObjets(new ArrayList<ObjetAnime>());
panel = jeuPanel;
for(int i = 0; i < gconfig.getObjetsTab().length; ++i)
{
switch(gconfig.getObjetsTab()[i].getType())
{
case ROND:
getListeObjets().add(new Rond(gconfig.getObjetsTab()[i]));
break;
}
}
addToPanel(panel);
}
public void addToPanel(GPanel jeuPanel) {
jeuPanel.setLayout(null);
Iterator iterator = getListeObjets().iterator();
ObjetAnime obj = (ObjetAnime) iterator.next();
jeuPanel.add(obj, obj.location);
while(iterator.hasNext())
{
obj = (ObjetAnime) iterator.next();
jeuPanel.add(obj, obj.location);
}
System.out.println(obj);
}
Und die Objekteigenschaften sind:
public ObjetsPropriete()
{
path = new String("./Images/Boule.png");
dim = new Dimension(32,32);
type = Objet.ROND;
}
Vielen Dank und einen schönen Tag!