#java #html #image #swing #jtextcomponent
#java #HTML #изображение #swing #jtextcomponent
Вопрос:
Я закодировал следующий код:
JDialog helpDialog = new JDialog();
helpDialog.setTitle("Help");
helpDialog.setResizable(false);
helpDialog.setAlwaysOnTop(true);
helpDialog.setSize(393, 43);
help.setSize(195,195);
help.setEditable(false);
help.setFont(new Font("Arial", Font.PLAIN, 24));
String txt = "<b><big>" "Help Page " "</big></b>" "<br/>"
" <img src= " ..\image.jpg " alt= " Logo " height= " " width=" 42 "> ";
help.setContentType("text/html");
help.setText(txt);
help.setCaretPosition(0);
helpDialog.add(help);
helpDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
helpDialog.pack();
helpDialog.setVisible(true);
//Window in center of the display not in the left top corner
helpDialog.setLocationRelativeTo(null);
Этот диалог предназначен только для информирования пользователя. Я хочу добавить изображение через String txt = "<b><big>" "Help Page " "</big></b>" "<br/>"
, однако изображение не отображается, даже если оно находится в
" <img src= " ..\image.jpg " alt= " Logo " height= " " width=" 42 "> "; scr
папке.
Какие-либо рекомендации, куда его поместить?
Я ценю ваш ответ!
Ответ №1:
Попробуйте что-нибудь более похожее…
<img src='" getClass().getResource("/path/to/image/image.jpg").toString() "' .../>
вместо этого…
Две основные причины, по которым ваш код не работает…
src
Каталог не будет существовать при сборке приложения, и изображение будет включено в результирующий файл Jar (при условии, что вы используете что-то вроде Netbeans или создаете его вручную, в противном случае Eclipse потребует, чтобы файл изображения был помещен вresources
каталог вместо этого). Это означает, что на ресурс больше нельзя ссылаться как на файл обычным способом, который вы, вероятно, используете для и …..\image.jpg
недопустимый URL-адрес для API для разрешения изображения (по сути, он не будет знать, как его найти), помимо всего прочего, относительный контекст, ну, контекстуальный и может измениться…
Например
import java.awt.EventQueue;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class ShowMeTheImage {
public static void main(String[] args) {
new ShowMeTheImage();
}
public ShowMeTheImage() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
String text = "<html><img src='" getClass().getResource("/images/battle.jpg").toString() "'/>";
JOptionPane.showMessageDialog(null, text);
}
});
}
}