Качать вставить изображение через ContentType («текст / html»);

#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()   "' .../>
 

вместо этого…

Две основные причины, по которым ваш код не работает…

  1. src Каталог не будет существовать при сборке приложения, и изображение будет включено в результирующий файл Jar (при условии, что вы используете что-то вроде Netbeans или создаете его вручную, в противном случае Eclipse потребует, чтобы файл изображения был помещен в resources каталог вместо этого). Это означает, что на ресурс больше нельзя ссылаться как на файл обычным способом, который вы, вероятно, используете для и …
  2. ..\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);
            }
        });
    }

}