Skalieren Sie ImageIcon automatisch auf die Etikettengröße
Auf meinem JFrame verwende ich den folgenden code zur Anzeige eines Bildes auf dem Panel :
ImageIcon img= new ImageIcon("res.png");
jLabel.setIcon(img);
Ich würde gerne die "auto-Größe" das Bild in das Etikett. In der Tat, manchmal die Bild Größe ist nur ein paar pixel, manchmal auch mehr.
Gibt es eine Möglichkeit, um die Größe des Etiketts, und klicken Sie dann auf autosize das Bild in das Etikett?
InformationsquelleAutor der Frage martin8 | 2013-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine schwierige Frage. Sie unterstreichen die Tatsache, dass Sie mit einem
JLabel
Bild zu zeigen, das ist der standard-Weg, Dinge zu tun, aberJLabel
ist ein Komplexes kleines Biest, mit text, Symbol und text-Ausrichtung und-Positionierung.Wenn Sie nicht brauchen, alle, dass zusätzliche Funktionalität, würde ich einfach selbst erstellen eine benutzerdefinierte Komponente in der Lage die Malerei ein Bild skaliert...
Die nächste Frage ist, wie wollen Sie um das Bild zu skalieren? Wollen Sie behalten Sie das Seitenverhältnis des Bildes? Wollen Sie "fit" oder "füllen" das Bild in den verfügbaren Platz.
@David Recht ist. Sie sollte, wo möglich, vermeiden
Image#getScaledInstance
da es nicht die Schnellste, aber noch wichtiger ist, im Allgemeinen, er nicht die höchste Qualität.Fit vs Füllen
Folgende Beispiel ist relativ einfach (und leiht sich schwer von meiner Bibliothek von code, so ist es wohl auch ein wenig verworren ;)). Es könnte aus einem hintergrund Skalierung thread, aber ich würde base die Entscheidung über die mögliche Größe des ursprünglichen Bildes.
InformationsquelleAutor der Antwort MadProgrammer
Überschreiben
getPreferredSize()
vonJLabel
und Rückkehr derDimension
s Sie wollen,aber weil ein
JLabel
wird Größe selbst, seine Inhalte müssen Sie nur die Größe des Bildes, die Sie hinzufügen, um dieJLabel
.Müssen Sie die Größe Ihrer Bild entsprechend der Breite und Höhe, die Sie möchten (als einfach hinzufügen, um die
JLabel
und dieJLabel
wird die Größe auf das Bild).Kann ich nicht empfehlen
Image.getScaledInstance(..)
haben, Lesen Sie hier mehr:Vor allem das problem beschrieben ist:
Hier ist eine benutzerdefinierte Methode, Ive gewesen benutze, die zur Umgehung der Probleme durch
getScaledInstance
:erstellen Sie ein Bild zu, was Größe, die Sie wollen über:
InformationsquelleAutor der Antwort David Kroukamp
Es kann auch gemacht werden, durch überschreiben der
paintComponent
Methode derJLabel
und Zeichnung derimage
mit Breite und Höhe so, dass derJLabel
. Und wenn Sie möchten, um die Größe des Bildes, wenn die Elterncontainer
geändert wird, können Sie dieWindowListener
auf den übergeordneten container undrepaint
dieJlabel
Beispiel jedes mal, wenn die übergeordneten Containers geändert wird.Hier ist die Demo:
InformationsquelleAutor der Antwort Vishal K
Können Sie die Stretch".
Wird das Bild automatisch in der Größe angepasst werden, um füllen Sie den verfügbaren Platz auf dem Etikett. Sie können Steuern, ob das Bild proportional skaliert oder vollständig füllt.
Mithilfe der
StretchIcon
ist flexibler als custom painting, wie vorgeschlagen, in den anderen links, wie Sie können, profitieren Sie von der automatischen Größenänderung für jede Komponente unterstützt eine Ikone.StretchIcon.java:
InformationsquelleAutor der Antwort camickr
Versuchen, diese Funktion:
InformationsquelleAutor der Antwort Punit Gupta
InformationsquelleAutor der Antwort Dheeraj Upadhyay
easywayprogramming.com wie man die Größe imageicon in java
Ab, wenn man Bild-Symbol, um jede Komponente wie button, label oder panel, es nicht für richtig, weil der Größe des Bildes. Wir können die Größe, die das Bild in zwei wegen.
erste Möglichkeit:
Image img = myIcon2.Funktion " getImage(); Image newimg = img.getScaledInstance(230, 310, java.das awt.Bild.SCALE_SMOOTH);
newIcon = new ImageIcon(newimg);
zweite Möglichkeit:
Image img = myIcon2.Funktion " getImage(); BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
newIcon = new ImageIcon(bi);
Versuchen Sie folgenden link easywayprogramming.blogspot.in:
easywayprogramming.blogspot.in ho-Größe ändern, Bild in java
InformationsquelleAutor der Antwort Ashish