2014-12-08 1 views
0

Ну в основном мое изображение не будет отображаться, я почти уверен, что это мой путь к файлу («C: \ Users \ Alex \ Desktop \ card.png» - это то, что свойства изображения говорят, это путь к файлу, но если я не поставлю двойной слэш, он смущает их для escape-последовательностей.) Если у кого-то есть ответ, он будет очень признателен. Вот мой код:Как я могу получить изображение, которое будет отображаться с помощью Java?

import java.awt.*; 
import javax.swing.*; 
public class IDK extends JFrame { 



public static void main(String args[]) { 

    new IDK(); 


} 

public IDK(){ 

     notsure(); 

     } 
public void notsure(){ 


    setBounds(420,100,440,400); 
    setTitle("Frame"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JPanel panel = new JPanel(); 
    JLabel label1 = new JLabel("Tell me something"); 
    JLabel image = new JLabel(); 
    label1.setText("New Text"); 
    JTextField text = new JTextField("Insert text",30); 
    image.setIcon(new ImageIcon("C:\\Users\\Alex\\Desktop\\card.jpg")); 
    panel.add(label1,image); 
    panel.add(text); 
    add(panel); 
    validate(); 
    panel.setBackground(Color.CYAN); 
    setVisible(true); 

} 

} 
+0

Да, «\» нужно будет экранировать, вы можете использовать '/' для Windows, и JVM автоматически их исправит – MadProgrammer

+0

Вы уверены, что 'C: \ Users \ Alex \ Desktop \ card.png' или' C: \\ Пользователи \\ Alex \\ Desktop \\ card.jpg'.? Вы упомянули разные вопросы, о которых идет речь, в коде. PLease обязательно. – Babel

ответ

2

Нет проблем с использованием «\» до тех пор, пока он экранирован, как вы это делали, если вы предпочитаете использовать / вместо этого, а на Windows JRE исправит его.

Как всегда, вы должны добавлять image отдельно, например ...

image.setIcon(new ImageIcon("C:\\Users\\Alex\\Desktop\\card.jpg")); 
panel.add(label1); 
panel.add(image); 

, как вы делаете это сейчас предполагается, что image является расположение ограничение для label1, что это не так.

Вы должны стараться избегать использования абсолютных путей и учиться использовать относительные пути и/или встраивать ресурсы в контекст приложения, это облегчает поиск этих ресурсов во время выполнения.

+0

Как встраивать ресурсы в контекст приложения? Кстати, спасибо, это сработало :) –

+0

Это зависит от того, какую IDE вы используете? Как правило, это копирование ваших ресурсов в каталог 'src' вашего проекта и использование' Class # getResource' для их извлечения ... – MadProgrammer

+0

oh ok, thanks and eclipse, если это помогает lol –

0

Создать папку в вашем проекте и назовите его «ресурсов», т.е. и поместить изображение в этой папке. Это гарантирует, что данное изображение находится в вашем пути к классам и может быть легко доступно.

Тогда вы можете просто сделать:

new ImageIcon("resources/card.jgp") 

Проблема с доступом внешних ресурсов является то, что специальные символы нужно экранировать, а также при экспорте проекта и передать его кому-то другому, то он/она не будет иметь изображение, требуемое программным обеспечением;)

+0

Не ссылайтесь на каталог 'src' из своего кода, он не будет существовать после того, как программа будет упакована. Это также зависит от подхода IDE или построения, который использует OP, например, Netbeans хотел бы использовать каталог 'resources' в каталоге' src', Eclipse может делать оба (я думаю), а Maven - это еще одна история. .. – MadProgrammer

+0

Кроме того, 'ImageIcon (String)' предполагает, что ресурс является файлом на диске ОС, который, если ресурс встроен в программу Jar, больше не будет, делая его недоступным после того, как приложение будет упаковано ... – MadProgrammer

+0

@MadProgrammer Да, src не существует, поэтому вы правы :). OP не указал, использует ли он maven или нет и какую IDE он использует. однако я не думаю, что в какой-либо среде IDE будет указано наличие папки ресурсов в src ?. По сравнению с ImageIcon, это также верно, но если OP хочет использовать изображение после упаковки в jar, то он может изменить это как ImagEIcon (getClass(). GetResource (""), не так ли? –

Смежные вопросы