我正在开发J2SE中的聊天应用程序,它也可以向其他用户发送表情符号.
我跟踪了该链接上描述的所有内容,All在开发环境中运行良好,但是当我为此制作jar时,当我向web上的其他用户发送表情符号时,它显示代码(????和?).
首先我认为这是一个从文件夹加载文件的问题所以使用ClassLoader,
?为了获得正确的图像,但在创建jar时显示?(问号),所以我删除了该代码以便更好地理解你.
代码如下:
public ChatUI() {
initComponents();
this.setLayout(new WrapLayout(FlowLayout.LEFT, 5, 5));
for (int i = 0; i < imageHexaCode.length; i++)
{
final javax.swing.JLabel imogis = new javax.swing.JLabel("" + imageHexaCode[i] + ";");
imogis.setCursor(new Cursor(Cursor.HAND_CURSOR));
imogis.setIcon(new javax.swing.ImageIcon(getClass().getResource("emoji_" + imageHexaCode[i] + ".png")));
imogis.setHorizontalTextPosition(JLabel.CENTER);
imogis.setVerticalTextPosition(JLabel.BOTTOM);
imogis.setFont(new Font(null, Font.PLAIN, 1));
imogis.setForeground(Color.white);
final int aa = i;
imogis.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
JLabel jl = new JLabel("" + imageHexaCode[aa] + ";");
jl.setName("" + imageHexaCode[aa] + ";");
jl.setFont(new Font(null, Font.PLAIN, 1));
jl.setHorizontalTextPosition(JLabel.CENTER);
jl.setVerticalTextPosition(JLabel.BOTTOM);
jl.setIcon(new javax.swing.ImageIcon(getClass().getResource("emoji_" + imageHexaCode[aa] + ".png")));
jl.setForeground(Color.white);
ChatPaneWrite.jtp.insertComponent(jl);
System.out.println("" + imogis.getText());
// you can open a new frame here as
// i have assumed you have declared "frame" as instance variable
}
});
this.add(imogis);
}
this.revalidate();
this.repaint();
}
其中imageHexaCode是一组表情符号.
static String[] imageHexaCode = {
"1f621",
"1f608",
"2764",
"1f494"
};
&安培; jtp是JTextPane,当用户点击标签时插入imoticons组件
ChatPaneWrite.jtp.insertComponent(jl);
表情符号存储在我写的同一个包中,这就是我没有使用ClassLoader的原因
jl.setIcon(new javax.swing.ImageIcon(getClass().getResource("emoji_" + imageHexaCode[aa] + ".png")));
或者它也可以像包ChatUI一样写
jl.setIcon(new javax.swing.ImageIcon(getClass().ClassLoader.getResource("ChatUI/emoji_" + imageHexaCode[aa] + ".png")));
这是快照:
在接收端的罐子里显示这样的表情符号
请帮我解决一下.
非常感谢所有人提前