Für ein Projekt, das ich mache, muss ich 2 Klassen erstellen, von denen eine ein JFrame erstellt und die andere das ein Bild enthält, das dem JFrame hinzugefügt werden muss.Hinzufügen von Bildern zu JFrame aus anderen Klassen
Meine JFrame Erstellen Klasse heißt Treiber und sieht wie folgt aus:
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Driver {
private JFrame win;
private Animals animals = new Animals();
private BirdButton nextBtn, enlargeBtn, shrinkBtn, moveToBtn;
private JTextField field;
public Driver() {
win = new JFrame("Angry Animal Name Game");
win.setBounds(100, 100, 600, 600);
win.setLayout(null);
win.setVisible(true);
nextBtn = new BirdButton("NEXT", 10, 10, animals);
win.add(nextBtn, 0);
enlargeBtn = new BirdButton("ENLARGE", 10, 60, animals);
win.add(enlargeBtn, 0);
shrinkBtn = new BirdButton("SHRINK", 10, 110, animals);
win.add(shrinkBtn, 0);
field = new JTextField();
field.setBounds(10, 250, 100, 20);
win.add(field, 0);
moveToBtn = new BirdButton("MOVETO", 10, 275, animals, field);
win.add(moveToBtn, 0);
win.add(animals, 0);
animals.recenter();
win.repaint();
}
}
Dann habe ich eine eigene Klasse Tiere, die ein Bild von einigen Vögeln enthält. Ich möchte, dass dieses Bild auf meinem JFrame angezeigt wird, aber mein Code scheint nicht so gut zu funktionieren. Tiere sieht wie folgt aus:
public class Animals extends Image {
public Circle selector;
public Image birds;
public Animals(){
birds = new Image(225,200,150,200);
birds.setImage("AngryBirds.png");
selector = new Circle(70,70,birds.getX(),birds.getY());
selector.setThickness(5);
birds.add(selector,0);
}
public void recenter(){
birds.setLocation((600-birds.getWidth()/2),(600-birds.getHeight()/2));
}
}
Da Tiere erstreckt Bild bin ich in der Lage, die diesen Befehl verwenden Tiere das Bild selbst zu machen oder was ich tun? Ich sollte Treiber in keiner Weise modifizieren.
public class Animals extends Image {
public Circle selector;
public Animals(){
new Image(225,200,150,200);
setImage("AngryBirds.png");
selector = new Circle(70,70,this.getX(),this.getY());
selector.setThickness(5);
this.add(selector,0);
}
public void recenter(){
this.setLocation((600-this.getWidth()/2),(600-this.getHeight()/2));
}
}
Ihre neue Animals-Klasse erweitert Image noch. Sie haben nichts über diese Image-Klasse erwähnt - ist das Ihre Klasse? Ist es 'java.awt.Image'? –
'win.setLayout (null);' 1) Java GUIs müssen auf verschiedenen Betriebssystemen, Bildschirmgrößen, Bildschirmauflösungen usw. mit verschiedenen PLAFs in verschiedenen Locales arbeiten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). 2) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. –
Sorry für die Verwirrung, Image ist eine Klasse, die der Professor uns gegeben hat. Ich schien die Probleme selbst erarbeitet zu haben, aber @HovercraftFullOfEels Ihre Ideen gaben mir den Anstoß.Danke –