我正在尝试向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?不兼容吗?
谢谢你的团队!
答案 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资源名称。
我发现了两种方法可以做到这一点:
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();
}
});
*/
}
}