是否可以向JBUTTON添加html img?

时间:2018-09-22 20:10:32

标签: java swing user-interface

我正在尝试向JButtons添加一些html代码,后来我使它们看起来像卡,看起来像引导卡。我能够添加h3 h1标题,但是当我尝试向JButton卡中添加一些img时,它并没有打印它,而是从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的正确绝对路径,那又是什么问题呢? JButton无法显示img?不兼容吗?

谢谢你的团队!

2 个答案:

答案 0 :(得分:1)

尝试一下

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,它还可以附加file:/以及路径。因此,可能需要加载外部图像。虽然不确定。但是,使用toExernalForm确实可以。

答案 1 :(得分:0)

好像需要将文件名指定为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();
            }
        });
*/
    }
}