Новое в Java и JTable.Я хочу добавить изображение в одну из ячеек в столбце.Я могу добавить изображение, но оно не отображается, просто изображение сломанного изображения:
![enter image description here](https://i.stack.imgur.com/ks0Ca.jpg)
Это код, которым я являюсьиспользуя для заполнения этих изображений:
@SuppressWarnings("unused")
public void createAvatar(String b64image, String name, int row, int col) {
String html = String.format("<html><table><td><img alt=\"Avatar\" style=\"position: absolute; top: 0px; left: 0px;\" src=\"data:image/png;base64,%s\"/>%s</td></table></html>", b64image, name);
table.setValueAt(html, row, col);
}
private void initialize() throws Exception {
...MORE CODE HERE...
try {
for (int i = 0; i < b64s.size(); i++) {
createAvatar(b64s.get(i), names.get(i), i, 8);
}
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
table = new JTable(model) {
@Override
public boolean isCellEditable (int row, int col)
{
return true;
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
return null;
}
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
if (c instanceof JComponent) {
if(column == 4){
JComponent jc = (JComponent) c;
jc.setToolTipText(getValueAt(row, column).toString());
}
}
return c;
}
};
table.getModel().addTableModelListener(new TableModelListener() {
@SuppressWarnings("static-access")
public void tableChanged(TableModelEvent e) {
...MORE CODE HERE...
});
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
for (int i = 0; i < b64s.size(); i++) {
createAvatar(b64s.get(i), names.get(i), i, 8);
}
}
Если я использую жестко закодированный путь к диску, как это:
@SuppressWarnings("unused")
public void createAvatar(String b64image, String name, int row, int col) {
String html = String.format("<html><table><td><img alt=\"Avatar\" style=\"position: absolute; top: 0px; left: 0px;\" src=\"%s\"/>%s</td></table></html>", "file:///C:/Users/xxxxxx/eclipse-workspacePhoton_xxxxx/xxxxx/resources/avatarB.png", name);
table.setValueAt(html, row, col);
}
Он работает просто отлично:
![enter image description here](https://i.stack.imgur.com/EU3zX.jpg)
И когда я делаю то же самое, но с жестко закодированной строкой base64:
String html = String.format("<html><table><td><img alt=\"Avatar\" style=\"position: absolute; top: 0px; left: 0px;\" src=\"data:image/png;base64,%s\"/>%s</td></table></html>", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA....aZ9htT6WuJRFzV3epJcukNncYXzbPKIUjXzcWmUe+K7lQ3q/tn0/Gbk89e3sSussuZpu2D1Wj0P0mjaW2u8Si/mHPSBJpmUUM8x9EVbrT4j3P9QAAAABJRU5ErkJggg==", name);
Отображается то же самоекак не жестко закодированная строка:
![enter image description here](https://i.stack.imgur.com/cAC4q.jpg)
и копирование HTML-переменной из кода:
<html><table><td><img alt="Avatar" style="position: absolute; top: 0px; left: 0px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcE.....ussuZpu2D1Wj0P0mjaW2u8Si/mHPSBJpmUUM8x9EVbrT4j3P9QAAAABJRU5ErkJggg=="/>Bob</td></table></html>
<html><table><td><img alt="Avatar" style="position: absolute; top: 0px; left: 0px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAEFUlEQVRIS82VYUxbVRTH33AbZoiZzk03BkQQp9Mw55yS6eIcg+BAqlLSOUzYCBoGGThHtuiHdTi3jKlBZWqUmAnrJjSUwVpZQAeidHTaQul7UGhf11H62s6q0Q9Dk2U73tve9/bu+kLIPvlP/mnSc87/13tPXx7zv5JVEBaNOv2rOE/waYcnlMn5fPdqtdo4Ur592e3BhDE+UMHxgpnlA/9yfABEs27hOvr0cG7hGOu6kk5G5i4AmOdwBV7n3IFQNFSAYZaHxve18E6ZBt6rfgPaWlrA4ZoWodfQj2h0hsOJJGJ2cRy3EA19TYbB8G0raNanwYtpCbD5AYZy6fOZMPCzRQRhOycuBx8kUcrS6/V3sJ7AaXHojL4dclYuiAmXW/3ESrhoG5ODfKzbn0wiY8Xywj6x2e68DMVrUyJBH1e9AsPtn0DXR3uh+PH7YkDayp1yCKA9/WIFWEBib8oxGUpDO/hHbGxtbo4EVGavhr/sJslTA6fg7fwnKUhBxmIYdU5RIHSaWhJ9U6jQJG86VPNmJMBQX0NBsP8cPgvtR3eDJnOpBOrt7bsFIlzp93rvJPEM43SGE9EprsqbKvKfg+zl88Db1xIDEf2HrQtOHiiHzcsZONn0JQXBZnn/NoJgmPFLQi5VdAugWr0UCtIWRYKUAHJrMpdB/f4aCkByviEIeuHYFisbuQLVw3crht7qik2rYMemNRQAGz3IIwSB9uEONMiLHW366ELncBK8n1cfXRy52sEhGwVBDhEEPon/U3nx+JG6CAQPTv2oUwwXPXTqmLR8XdNXcgB2mCDQSVz+A/JibUmhNHjmg7cUw0UfLs2VepsaPpQD8E4mCIJhRl3TarHgmJyGwkeWSIP4vvGVKAGwS9atkHo/O3qIgqCH0kAQDOPxhO5HX17Dhd6e89KQaPzEKwGGdPWwZUWc1LdHs5WGeIJVBBEV6xLO4ULDwXcpgOi67S+Ab+B0JByfTH+kCvJS46kevEP8p8E56Kpmxv1/LyHxUaG/8bOocGNXwUZqUPSWpDiwdzRKkB1ZqYp92l2lUQgfOE6iaaH3w4mt6XfFDOYkzQddXSV1VWzX51D02LKY3oNVO/EpAvjNSWJpdXZ2JuamxI/Lh4rTU+BcowmCwm8QHv8VwtY++J0dhJDXCxMjl6B6XR4F+aL+8MzYpLCRRCpLnZWRlJscP4YHXsvIAENhD5iKLoDtBA+cyQfnd9tguNkDnNEH31dYwagahH3rNRFATvLCq4a2tjwSNbvKNmxIfOmhe5p1+a03jCozCprdZ1U/QfmaZ9htT6WuJRFzV3epJcukNncYXzbPKIUjXzcWmUe+K7lQ3q/tn0/Gbk89e3sSussuZpu2D1Wj0P0mjaW2u8Si/mHPSBJpmUUM8x9EVbrT4j3P9QAAAABJRU5ErkJggg=="/>Bob</td></table></html>
Отображается ли нормально (что означает, что изображение base64 правильное и работает)
Так я не могу использовать версию Base64 внутри HTML для jTable?