区块链技术博客
www.b2bchain.cn

Java TrayIcon消息未显示 – java程序员分享

本文介绍了Java TrayIcon消息未显示 – java程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我试图使用TrayIcon在Windows 8.1中显示基本的系统任务栏消息。但是,当我运行该程序时,没有任何显示。这是代码:

package alert1;  import java.net.*; import java.io.*; import java.util.*; import java.awt.*; import javax.imageio.*;  public class Main {     public static void main(String[] args) throws IOException {         URL gfl = new URL("http://gflclan.com/GFL/serverlist.php");         BufferedReader in = new BufferedReader(new InputStreamReader(gfl.openStream()));          Image img = ImageIO.read(new File("gflicon.jpg"));         TrayIcon tray = new TrayIcon(img);          System.out.println("Enter name of map: ");         Scanner scan = new Scanner(System.in); //retrieves name of map from IO         String str = scan.nextLine();         scan.close();                              //pL = previousLine         String pL1 = null;  //line which contains the server name         String pL2 = null;         String pL3 = null;         String pL4 = null;  //line which contains the server IP         String pL5 = null;         String currentLine;         while ((currentLine = in.readLine()) != null)             if(currentLine.contains(str)){                 String pL1fixed = pL1.replaceAll("\<.*?\> ?", "").trim(); //removes HTML/CSS formatting                 String pL4fixed = pL4.replaceAll("\<.*?\> ?", "").trim();                 System.out.println("Server Name: " + pL1fixed);                 System.out.println("Server IP: " + pL4fixed);                 tray.displayMessage("Server Found", "[Server Info Here]", TrayIcon.MessageType.WARNING);             } else {                 pL1 = pL2; //updates stream's line history                 pL2 = pL3;                 pL3 = pL4;                 pL4 = pL5;                 pL5 = currentLine;             }         in.close();     } } 

我有什么想念的吗?据我所知,我有TrayIcon对象,并在其上调用了displayMessage,所以我不知道为什么它没有显示。这是我的第一个Java项目,也是我第一次处理图像,因此如果这段代码非常业余,请原谅我。

参考方案

首先,看看How to Use the System Tray和JavaDocs for SystemTray,其中有许多示例

基本上,您没有将TrayIcon添加到任何内容

摘自SystemTray JavaDocs的示例

if (SystemTray.isSupported()) {      SystemTray tray = SystemTray.getSystemTray();      Image image = ...;      trayIcon = new TrayIcon(image, "Tray Demo");      try {          tray.add(trayIcon);      } catch (AWTException e) {          System.err.println(e);      } } 

其次,您实际上不应该将基于控制台的程序与GUI混合使用,它们具有不同的工作方式,这些方式通常彼此不兼容。

java.awt.HeadlessException – java

JFileChooser chooser = new JFileChooser(); JDialog dialog=new JDialog(); dialog.setAlwaysOnTop(true); /*System.out.println("is always on top?"+dialog.isAlwaysOnTop());*/ …

Java-搜索字符串数组中的字符串 – java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java:线程池如何将线程映射到可运行对象 – java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? – java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 – java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Java TrayIcon消息未显示 – java程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们