Java Swing: wyświetlanie obrazów z wnętrza słoika
Podczas uruchamiania aplikacji Java z eclipse mój ImageIcon pokazuje się dobrze.
Ale po stworzeniu słoika ścieżka do obrazu oczywiście się spieprza.
Czy istnieje sposób na wyodrębnienie obrazu ze słoika w czasie wykonywania, abym mógł go następnie otworzyć? Czy jest na to lepszy sposób?
Chciałbym rozpowszechnić pojedynczy plik jar, jeśli to możliwe.
5 answers
Aby utworzyć ImageIcon
z pliku obrazu w tych samych słoikach, kod zostanie załadowany:
new javax.swing.ImageIcon(getClass().getResource("myimage.jpeg"))
Class.getResource
zwraca adres URL zasobu(lub null
!). ImageIcon
ma konstruktor, który ładuje się z adresu URL.
Aby utworzyć adres URL dla zasobu w jar, który nie znajduje się na "classpath", zobacz dokumentację java.net.JarURLConnection
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-06 16:50:47
Możesz spróbować czegoś takiego:
InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/images/image.jpg");
W pliku JAR możesz mieć strukturę katalogów:
MyJAR.jar
- com (class files in here)
- images
---- obraz.jpg
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 20:18:29
To działa dla mnie, aby załadować i ustawić obraz tła panelu zawartości:
Jar (lub ścieżka budowania) zawiera:
- com
- img
---- bg.png
Java zawiera:
JFrame f = new JFrame("Testing load resource from jar");
try {
BufferedImage bg = ImageIO.read(getClass().getResource("/img/bg.png"));
f.setContentPane(new ImagePanel(bg));
} catch (IOException e) {
e.printStackTrace();
}
Testowane i działające zarówno w jar, jak i w unjarred (jest to termin techniczny).
BTW getClass().getClassLoader().getResourceAsStream("/img/bg.png")
- co próbowałem pierwszy-zwrócił mi null InputStream.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-29 15:37:31
W netbeans 8.1 to, co zrobiłem, to umieszczenie folderu ikon i innych obrazów o nazwie Resources wewnątrz folderu src w pliku projektu. Więc kiedy buduję plik Jar , Folder jest tam dołączany.Drzewo plików powinno wyglądać tak:
- src (pliki Javy w pakietach źródłowych są tutaj)
** PAKIET, KTÓRY NAZWAŁEŚ W PROJEKCIE**
- Plik.java
Zasoby
- obraz.jpg
Kod powinien wyglądać następująco:
jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-07 09:56:05
Wczytywanie obrazu z pliku Jar podczas wykonywania jest takie samo jak wczytywanie obrazu z IDE np. netbeans różnica polega na tym, że podczas wczytywania obrazu z pliku JAR ścieżka musi być poprawna i uwzględniać wielkość liter (bardzo ważne). To działa dla mnie
image1 = new javax.swing.ImageIcon(getClass().getResource("/Pictures/firstgame/habitat1.jpg")); img = image1.getImage().getScaledInstance(lblhabitat1.getWidth(), lblhabitat1.getHeight(), Image.SCALE_SMOOTH); lblhabitat1.setIcon(new ImageIcon(img));
If P in " / Pictures / firstgame / habitat1.jpg " jest w dolnej części to nie działa. sprawdź spacje, przypadki i pisownię
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-07 16:10:43