我正在编写一个带有SystemTray图标的Java应用程序,我想在TrayIcon的“显示消息”中添加换行符,但正常的html技巧似乎不起作用(就像它在JLabels中一样) )。
在下面的示例中,下面的trayIcon变量的类型为“java.awt.TrayIcon”。
trayIcon.displayMessage("Title", "<p>Blah</p> \r\n Blah <br> blah ... blah", TrayIcon.MessageType.INFO);
Java忽略\ r \ n,但显示html标记。
有什么想法吗?
如果没有,我将使用JFrame或其他东西。
更新:这似乎是一个特定于平台的问题,我应该在问题中指定我的操作系统:我需要这个在Windows和Linux上运行。
Nishan表示在Windows上可以使用\ n,并且我在Vista旁边确认了我现在旁边有我。 看起来就像我需要使用JFrame或消息框制作自定义内容
干杯球员
答案 0 :(得分:2)
追加\ n为我工作:
"<HtMl><p>Blah</p> \n Blah <br> blah ... blah"
答案 1 :(得分:2)
如上所述here,无法在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);