Java (JDK6) - lägga programmet i notification area/System tray

Här diskuteras programmering och utveckling
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av Pinky »

Jag tänkte göra ett enkelt program som mestadels ska hålla sig "ur vägen", och lämpligast då är att lägga det i notification arean, vid klockan, tycker jag.
När jag försöker göra en enkel koll om system tray stöds på mitt system, med hjälp av en enkel

Kod: Markera allt

if (SystemTray.isSupported()){
System.out.println("Yes");
}
else{
System.out.println("Nix");
}
Så får jag Nix hela tiden.

Jag kör JDK 6 och har importerat java.awt.SystemTray.

Den guide jag tittat på är mestadels denna: http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/

Förslag?  :D

Mvh
Pinky
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av TicToc »

Jag får Yes hela tiden...  :o

Kod: Markera allt

package tray;
import java.awt.SystemTray;
public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
        if (SystemTray.isSupported()){
            System.out.println("Yes");
        } else{
            System.out.println("Nix");
        }
        
    }
    
}
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av Pinky »

Varför får inte jag det?! :(

Förresten, när programmet väl körs, så körs det väl av det som är inställt som default på systemet. Har för mig att man kunde byta det på nåt sätt, men hur? Den kanske bar ainte är inställd på Suns Java 6?

Edit: Hittade java kontrollpanelen i inställningar-menyn. Det fanns enbart Sun Java 6, och det var inställt som standard...
Kan det vara att jag har min notification area i min AWN istället för gnome-panelen? Med tanke på att jag kör Azureus (javabaserat) och det funkar fint i trayen så borde det inte vara det heller... :(
Senast redigerad av 1 Pinky, redigerad totalt 28 gånger.
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av gasol »

Om klassen java.awt.SystemTray inte skulle finnas i din JRE du kör programmet med så skulle du får class cast exception. Vet inte om det är så mycket till hjälp men du kan ju alltid testa och se om det är din system tray som är buggig. Det borde räcka med ett litet program som kör

XGetSelectionOwner med atomen _NET_SYSTEM_TRAY_S0 om XGetSelectionOwner returnerar ett riktigt fönster så fungerar din system tray som den ska, annars så kan det ju vara en bugg i Java.

En annan sak som skulle kunna ställa in det är om du försöker att köra ditt java program på en annan (X11) screen eftersom 0:an i _NET_SYSTEM_TRAY_S0 representerar vilken screen du kör på. Detta kanske kan vara nåt att kolla upp. Vet inte alls hur Java implementerar system tray funktionerna men skulle tro att den bygger på att den kollar om det finns någon tray på samma screen som den körs på, så har jag gjort det iaf.


Läs mer om protokollet.
http://standards.freedesktop.org/system ... c-0.1.html
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av TicToc »

Nu har också jag fått det att inte fungera.
Skrivbordseffekter på, tray = Nix.
Skrivbordseffekter av, tray = Yes.
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av Pinky »

Prexis samma här!
När jag stängde av effekterna så funkade det finfint :)
Härligt att man vet var felet ligger iallafall... Lösningsförslag någon? :D
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av Pinky »

Jag har funderat lite på det här, och kanske har det med SystemTray-klassen att göra. Den är ny för java 6, och tidigare fick man tydligen gå igenom lite omständigare procedurer för att göra en trayIcon.
Azureus är, om jag inte minns fel, javabaserat, men troligtvis inte skrivet i java 6, och det sitter ju så fint i trayen så.
Google, here i come!

Edit:
Första resultatet: http://java-hamster.blogspot.com/2007/06/pain-with-java-system-tray-on-kde.html
Handlar förvisso om KDE, men stöder min teori om att det har med Java 6 att göra :(

Andra: I min oändliga dumhet så tänkte jag att, om Azureus funkar, så kan jag ju kika lite på deras källkod. Mnjovisst, den var ju inte såå stor.. Nejnej.
Någon med lite större kunskap än mig som kan hitta trayfunktionen i den här? http://rosa.servebeer.com/Azureus_3.0.4.2_source.zip
Senast redigerad av 1 Pinky, redigerad totalt 29 gånger.
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

SV: Java (JDK6) - lägga programmet i notification area/System tray

Inlägg av gasol »

cat *.java | grep -i tray
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Skriv svar

Återgå till "Programmering och webbdesign"