问题描述
我有一个 Java 应用程序,它的 SystemTray 在 Linux 中不能完全运行。我想添加新的库来测试它的功能,但无法找到。截至目前,dorkBox.SystemTray 和 dorkBox.Util 是两个正在使用的库。
是否有任何不同的库可以尝试或任何方法。
以下是我的代码
package client;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.socketTimeoutException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.sql.sqlException;
import java.sql.Timestamp;
import dorkBox.systemTray.CheckBox;
import dorkBox.systemTray.Entry;
import dorkBox.systemTray.Menu;
import dorkBox.systemTray.MenuItem;
import dorkBox.systemTray.Separator;
import dorkBox.systemTray.SystemTray;
import dorkBox.systemTray.SystemTray.TrayType;
import dorkBox.systemTray.ui.swing.SwingUIFactory;
import dorkBox.util.CacheUtil;
import dorkBox.util.JavaFX;
import dorkBox.util.OS;
import hardwarelog.Clock;
import java.io.File;
import static java.lang.System.exit;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
//import javax.swing.JMenuItem;
//import javax.swing.jpopupmenu;
//import javax.swing.JSeparator;
//import javax.swing.plaf.MenuItemUI;
//import javax.swing.plaf.PopupMenuUI;
//import javax.swing.plaf.SeparatorUI;
import org.gnome.gtk.FileChooserAction;
import org.gnome.gtk.Gtk;
import org.gnome.notify.Notification;
import org.gnome.notify.Notify;
import org.json.simple.parser.ParseException;
import dorkBox.util.CacheUtil;
public class Client {
static boolean active;
private static Client Client;
public static String my_ip;
public static String email,admin,olduser;
public static String token="";
public static SendFile2Server sf2s=new SendFile2Server();
public static MenuItem on;
public static MenuItem of;
public static SystemTray systemTray;
// public static
// class MyApplication extends Application {
// public
// MyApplication() {
// }
//
// @Override
// public void start(final Stage stage) throws Exception {
// if (Client == null) {
// Client = new Client();
// }
//
// Client.doJavaFxStuff(stage);
// }
// }
public static void runclient() throws InterruptedException,IOException {
if (SystemTray.isSupported())
{
}
Client = new Client();
// check app active
Appactive app = new Appactive();
try {
active = app.isAppActive();
} catch (Exception ex) {
ApiCallDetails.logger.writeLog(ex);
} finally {
}
System.out.println("inside main1 "+active);
if(!active){
try {
showTray();
Clock c=new Clock(email,token,olduser);
c.startClock();
}
catch(Exception e) {
ApiCallDetails.logger.writeLog(e);
System.exit(0);
}
}
else {
System.exit(0);
}
}
public Client() {
//// Getmyip ip = new Getmyip();
//// my_ip = ip.geIp();
getSystemDetails sys= new getSystemDetails();
ArrayList connect_ip = sys.getServerIp();
//
// remote_server_ip = (String) connect_ip.get(0);
email = (String) connect_ip.get(0);
// String port_to= (String) connect_ip.get(2);
// port = Integer.parseInt(port_to);
admin = (String) connect_ip.get(1);
// prefix = (String) connect_ip.get(4);
// remote_server_ip = "18.136.174.179";
//user_name = "babu";
// domain = "app";
olduser = (String) connect_ip.get(3);
System.out.println("url "+ApiCallDetails.API_CALL_URL);
token=(String) connect_ip.get(2);
systemTray = SystemTray.get();
}
public static void showTray() throws Exception {
try {
System.out.println("\n\n\n\n\n\n\n\n show \n\n\n\n\n\n\n\n");
if (systemTray == null) {
// throw new RuntimeException("Unable to load SystemTray!");
System.exit(0);
}
String[] args={"",""};
LocalDbOperations lb=new LocalDbOperations();
System.out.println(SystemTray.DEBUG);
SystemTray.DEBUG=true;
CacheUtil.clear();
SystemTray.FORCE_GTK2=true;
systemTray.setimage("/usr/local/bin/Desklog-Client/nonet.png");
systemTray.setStatus("No network Connection");
ActionListener offline=new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
// Todo Auto-generated method stub
systemTray.setimage("/usr/local/bin/Desklog-Client/offline.png");
on.setEnabled(true);
of.setEnabled(false);
System.out.println("offline .....");
systemTray.setStatus("Offline");
CaptureApplication.online=false;
try {
String test_connection= sf2s.getUserConfig(email,token);
if(test_connection==null) {
try {
Timestamp tm=new Timestamp(Clock.getStamp());
lb.insertAppStatus(ApiCallDetails.connectsql,tm,0);
} catch (sqlException e2) {
// Todo Auto-generated catch block
e2.printstacktrace();
}
}
} catch (SocketTimeoutException e1) {
// Todo Auto-generated catch block
ApiCallDetails.logger.writeLog(e1);
e1.printstacktrace();
} catch(IOException e3) {
System.out.println("\n\n\there\n\n");
e3.printstacktrace();
} catch (ParseException e1) {
// Todo Auto-generated catch block
e1.printstacktrace();
}
}
};
ActionListener online=new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
// Todo Auto-generated method stub
System.out.println("online .....");
systemTray.setimage("/usr/local/bin/Desklog-Client/leaf.png");
on.setEnabled(false);
of.setEnabled(true);
systemTray.setStatus("Online");
CaptureApplication.online=true;
try {
String test_connection = sf2s.getUserConfig( email,1);
} catch (sqlException e2) {
// Todo Auto-generated catch block
e2.printstacktrace();
}
}
} catch (SocketTimeoutException | ParseException e1) {
// Todo Auto-generated catch block
ApiCallDetails.logger.writeLog(e1);
e1.printstacktrace();
}
}
};
ActionListener myDesklog=new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
// Todo Auto-generated method stub
try {
Desktop.getDesktop().browse(new URI(ApiCallDetails.WEBSITE));
} catch (IOException e1) {
// Todo Auto-generated catch block
ApiCallDetails.logger.writeLog(e1);
e1.printstacktrace();
} catch (URISyntaxException e1) {
// Todo Auto-generated catch block
ApiCallDetails.logger.writeLog(e1);
e1.printstacktrace();
}
// offline.
}
};
of=new MenuItem("Go Offline",offline);
on=new MenuItem("Go Online",online);
MenuItem logout=new MenuItem("logout",new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
// Todo Auto-generated method stub
File f=new File(System.getProperty("user.home")+ApiCallDetails.ENCR_FILE_LOCATION+"/encry.des");
if(f.exists()) {
f.delete();
}
File db=new File(System.getProperty("user.home")+ApiCallDetails.ENCR_FILE_LOCATION+"/offline.db");
try {
ApiCallDetails.connectsql.close();
} catch (sqlException e1) {
// Todo Auto-generated catch block
ApiCallDetails.logger.writeLog(e1);
e1.printstacktrace();
}
if(db.exists()) {
db.delete();
}
try {
Process p = Runtime.getRuntime().exec(new String[] { "/bin/bash","-c","/usr/local/bin/Desklog-Client/jre/bin/java -jar /usr/local/bin/Desklog-Client/DesklogClient.jar" });
} catch (IOException e2) {
// Todo Auto-generated catch block
ApiCallDetails.logger.writeLog(e2);
// e.printstacktrace();
}
System.exit(0);
}
});
MenuItem link=new MenuItem("My Desklog",myDesklog);
MenuItem user_email=new MenuItem(email);
MenuItem version=new MenuItem("Version-1.0.6");
on.setEnabled(false);
systemTray.getMenu().add(user_email).setShortcut('q');
systemTray.getMenu().add(version).setShortcut('q');
systemTray.getMenu().add(link).setShortcut('q');
systemTray.getMenu().add(of).setShortcut('q');
systemTray.getMenu().add(on).setShortcut('q');
systemTray.getMenu().add(logout).setShortcut('q');
systemTray.getMenu().add(new MenuItem("Quit",new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
// Todo Auto-generated method stub
systemTray.shutdown();
System.exit(0);
}
})).setShortcut('q');
// case does not matt
}
catch(Exception e) {
ApiCallDetails.logger.writeLog(e);
throw new Exception();
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)