有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以将html img添加到JBUTTON?

我正在尝试向JButtons添加一些html代码,稍后我将它们做成卡片,看起来像引导卡。我能够添加H3H1标题,但当我尝试将一些IMG添加到我的JButton卡时,它并没有打印它,而是打印来自Java库或W/E的一些示例图片

我的代码是:

JButton btn = new JButton("<html><img src=/" + j.getListaCartas().get(i).getUrlImagen() + "/  height=\"64px\" width=\"64px\"><h3>" + j.getListaCartas().get(i).getNombre() + "</h3><br>" + j.getListaCartas().get(i).getTipo() + "<br>" + j.getListaCartas().get(i).getATK() + "<br>" + j.getListaCartas().get(i).getDEF() + "<br>" + j.getListaCartas().get(i).getElemento() + "<br>" + "</html>");

“getListaCartas().get(i).getUrlImagen()”返回以下内容:

C:\Users\sportak\Documents\NetBeansProjects\ThunderCards\ThunderCards\fondoCartas.png

img的正确绝对路线是哪条,那么问题是什么?按钮不能显示img?不兼容

谢谢你们的团队


共 (2) 个答案

  1. # 1 楼答案

    看起来需要将文件名指定为URL资源名

    我找到了两种方法:

    1. 获取文件名作为URL资源,并在HTML中使用URL的字符串表示形式
    2. 在HTML的头中指定base参数,以便所有文件都与基文件相关

    这两种方法的示例如下:

    import java.awt.*;
    import javax.swing.*;
    import java.net.*;
    
    public class HTMLLocalImage
    {
        private static void createAndShowGUI()
        {
            //  Convert file name to a URL resource
    
            URL url = HTMLLocalImage.class.getResource("bird.gif"); // If image is on the same folder of class
            String urlText =  "<html><body><h1>Image using path from URL</h1><br><img src='" + url.toExternalForm() + "'></body></html>";
            JLabel urlLabel = new JLabel( urlText );
    
            //  Spcify the base to be used for all file names
    
            String base = HTMLLocalImage.class.getResource("").toString();
            String baseText = "<html><head><base href='" + base + "'></head><body><h1>Image using path from BASE</h1><br><img src='bird.gif'></body></html>";
    //      String baseText = "<html><head><base href='file:/c:/java/'></head><body><h1>Image using path from BASE</h1><br><img src='bird.gif'></body></html>";
            JButton baseButton = new JButton(baseText);
    
            JFrame frame = new JFrame("HTML Local Image");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout( new FlowLayout() );
            frame.add( urlLabel );
            frame.add( baseButton );
            frame.pack();
            frame.setLocationByPlatform( true );
            frame.setVisible( true );
        }
    
        public static void main(String[] args) throws Exception
        {
            EventQueue.invokeLater( () -> createAndShowGUI() );
    /*
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    createAndShowGUI();
                }
            });
    */
        }
    }
    
  2. # 2 楼答案

    试试这个

    URL url = getClass().getResource("xyz.png"); // If image is on the same folder of class
    String text = "<html><body  border='0' width='48' height='48' background='" + url.toExternalForm() + "'></body></html>";
    btn = new JButton(text);
    

    我注意到,通过使用url。为了进行外部格式化,它还将文件:/toExternalForm与路径一起追加。因此,可能需要加载外部图像。不过我不确定。但是,使用toExernalForm确实有效