Как уже упоминалось здесь , невозможно отобразить новые строки в сообщениях с иконками в трее в Linux.
Только сейчас появилась хитрая идея, которая сработала для меня.Наблюдаемое количество символов, отображаемых в строке в сообщении.Для меня это показывает 56 символов в строке.
Итак, если строка содержит менее 56 символов, заполните пробел, чтобы сделать его 56 символов.
Знал, что это ненадлежащим образом, но не мог найти другие альтернативы.Теперь мой результат соответствует ожиданиям.
private java.lang.String messageToShow = null;
private int lineLength = 56;
/*This approach is showing ellipses (...) at the end of the last line*/
public void addMessageToShow(java.lang.String messageToShow) {
if (this.messageToShow == null){
this.messageToShow = messageToShow;
}else{
this.messageToShow += "\n" + messageToShow;//Working perfectly in windows.
}
if (System.getProperty("os.name").contains("Linux")){
/*
Fill with blank spaces to get the next message in next line.
Checking with mod operator to handle the line which wraps
into multiple lines
*/
while (this.messageToShow.length() % lineLength > 0){
this.messageToShow += " ";
}
}
}
Итак, я попробовал другой подход
/*This approach is not showing ellipses (...) at the end of the last line*/
public void addMessageToShow(java.lang.String messageToShow) {
if (this.messageToShow == null){
this.messageToShow = messageToShow;
}else{
if (System.getProperty("os.name").contains("Linux")){
/*
Fill with blank spaces to get the next message in next line.
Checking with mod operator to handle the line which wraps
into multiple lines
*/
while (this.messageToShow.length() % lineLength > 0){
this.messageToShow += " ";
}
}else{
this.messageToShow += "\n";// Works properly with windows
}
this.messageToShow += messageToShow;
}
}
И наконец
trayIcon.displayMessage("My Title", this.messageToShow, TrayIcon.MessageType.INFO);