Ich möchte Bilder entsprechend dem Rahmen und der Breite des JFrames anzeigen, so dass die Bilder entsprechend der Größe des Rahmens proportional angezeigt werden (mein Programm ist so ausgelegt dass es unmöglich ist, einen der Layout-Manager zu verwenden).Warum gibt Frame.Width und Frame.Height sehr falsche Werte zurück
Wenn ich jedoch versuche, Bilder entsprechend den Parametern frame.width und frame.height anzuzeigen, werden die Bilder oben links im JFrame angezeigt. Auch print-Anweisungen, die frame.width und frame.height enthalten, geben Werte von 1 bzw. 2 zurück. Wie ist das möglich? Ich habe den Code unten gesetzt.
(Auch ich entschuldige mich für die seltsame Einrückung, aber ich habe eine Menge Schwierigkeiten, den Code auf dieser Seite richtig angezeigt zu bekommen. Ich muss die Leertaste einiger Zeilen 4mal manuell drücken, obwohl ich es weiß war der richtige Einzug in meinem Code, und wenn ich das tue, wird es in der Codeansicht angezeigt, aber mit falschem Einzug).
public class ExperimentGame extends JPanel{
Image image;
public ExperimentGame(){
JFrame frame = new JFrame();
SwingUtilities.isEventDispatchThread();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setSize(500,500); //my edit
this.setBackground(Color.WHITE);
frame.setVisible(true);
try {
image = ImageIO.read(this.getClass().getResource("spaceship (0).png"));
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
revalidate();
repaint();
System.out.println(Frame.WIDTH + " " + Frame.HEIGHT);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, Frame.WIDTH, Frame.HEIGHT, null);
}
}
public class ExperimentMain {
public static void main(String[] args) {
ExperimentGame game = new ExperimentGame();
}
}
'Frame.WIDTH'? Warum benutzt du das überhaupt? Und was versuchst du mit diesem Code zu erreichen? Einige Bildlinks wären nett. Auf diese Weise zeigen Sie übrigens keine Bilder mit proportionaler Breite an. –
Lesen Sie meine Beschreibung oben, und Sie werden sehen. – jmao
'public static final int WIDTH = 1;' und 'public static final int HEIGHT = 2;' sind Flags, die in der 'imageUpdate' Methode verwendet werden, ziemlich sicher, dass sie nicht tun, was Sie denken, sie sind - Hier lesen Sie die [JavaDocs] (https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html) wird sehr wichtig – MadProgrammer