Reputation: 11
I'm using Kryonet API for a chat app. I managed to get the server / client connected. Text messages are sent and received successfully but I'm having difficulty posting emoji's. When debugging I'm able to print emoji's in the terminal but not in the chat.
I also tried:
String smiley = "\uD83D\uDE00" and
String smiley = ":smiley:string 😄";
String result = EmojiParser.parseToUnicode(smiley);
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import com.vdurmont.emoji.EmojiParser;
import packets.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import com.esotericsoftware.kryonet.Client;
import javax.swing.*;
public class Main<java> implements ActionListener {
private static final JFrame frame = new JFrame("Chat Client");
private static final JTextArea textArea = new JTextArea();
private static final JTextField textField = new JTextField(25);
private static final JButton sendButton = new JButton("Send");
private static Icon emojiIcon = new ImageIcon("/Emoticons/smiley.png");
private static final JButton emojiButton = new JButton(emojiIcon);
private final Client client;
private String username;
public Main() {
client = new Client();
client.start();
try
{
client.connect(5000, "127.0.0.1", 23900, 23901);
}
catch (IOException e)
{
JOptionPane.showMessageDialog(null, "Cannot connect to server.");
return;
}
client.getKryo().register(Packet.class);
client.getKryo().register(Packet1Connect.class);
client.getKryo().register(Packet2ClientConnected.class);
client.getKryo().register(Packet3ClientDisconnect.class);
client.getKryo().register(Packet4Chat.class);
client.addListener(new Listener()
{
public void received(Connection connection, Object object)
{
if (object instanceof Packet)
{
if (object instanceof Packet2ClientConnected)
{
Packet2ClientConnected p2 = (Packet2ClientConnected) object;
textArea.append(p2.clientName + " connected.\n");
}
else if(object instanceof Packet3ClientDisconnect)
{
Packet3ClientDisconnect p3 = (Packet3ClientDisconnect) object;
textArea.append(p3.clientName + " disconnected.\n");
}
else if(object instanceof Packet4Chat)
{
Packet4Chat p4 = (Packet4Chat) object;
textArea.append(p4.username + ": " + p4.message + "\n");
}
}
}
});
username = JOptionPane.showInputDialog("Please enter your username.");
Packet1Connect p1 = new Packet1Connect();
p1.username = username;
client.sendTCP(p1);
frame.setSize(450, 375);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Panel p = new Panel();
sendButton.addActionListener(this);
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane areaScrollPane = new JScrollPane(textArea);
areaScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
areaScrollPane.setPreferredSize(new Dimension(430, 275));
emojiButton.addActionListener(this);
sendButton.add(emojiButton);
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
areaScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
areaScrollPane.setPreferredSize(new Dimension(430, 275));
p.add(areaScrollPane);
p.add(textField);
p.add(sendButton);
p.add(emojiButton);
frame.add(p);
frame.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
@Override
public void actionPerformed(ActionEvent e) {
String message = textField.getText();
if (e.getSource() == sendButton)
{
if (!message.equalsIgnoreCase(""))
{
Packet4Chat p4 = new Packet4Chat();
p4.username = username;
p4.message = message;
client.sendTCP(p4);
textField.setText("");
}
}
else if(e.getSource() == emojiButton)
{
// Insert smiley
String smiley = ":smiley:string 😄";
String result = EmojiParser.parseToUnicode(smiley);
Packet4Chat p4 = new Packet4Chat();
p4.username = username;
p4.message = message + result;
client.sendTCP(p4);
textField.setText("");
}
}
}
The output in the chat produces: "string 😄" instead of a smiley emoji.
Upvotes: 1
Views: 56