java桌面程序与服务交互_Java作为具有交互式桌面支持的Windows服务并读取curren登录用户...
我有一个java程序,像apache Common Deamon(prunsrv)包装的windows服务一样工作,但是我有两个问题:
1.使用交互式桌面配置的服务可以查看摆动对话框并尝试从应用程序中获取图标。但是idalog和try图标没有出现。
2.交互式桌面仅适用于本地系统帐户,应用程序无法读取当前记录的用户,该用户名对于应用程序是必需的
然后我需要解决这2个问题,谢谢,我粘贴主类的代码
package widget;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.Label;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import widget.controller.NotifyManager;
import widget.utils.Logger;
public class AWidget extends JFrame {
private static Properties props = null;
private static String parametersFile = "widget.properties";
public static String mediaResourcesPath;
public static String appIcon;
public static int updateFrecuency = 5;
String username = "";
TrayIcon trayIcon;
SystemTray tray;
static String activityImages[];
AWidget() {
super("Italo Widget");
mediaResourcesPath = getParameter("mediaResourcesPath");
appIcon = getParameter("appIcon");
String val = getParameter("updateFrecuency");
try {
updateFrecuency = Integer.parseInt(val);
} catch (NumberFormatException e) {
Logger.getTrace().debug("No se pudo leer la frecuencia de actualización de los mensajes");
}
updateFrecuency *= 1000;
username = System.getProperty("user.name");
username = "Javier";
System.out.println("creating instance");
try {
System.out.println("setting look and feel");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.out.println("Unable to set LookAndFeel");
}
JPanel panel = new JPanel();
panel.add(new Label("Usuario: " + username));
add(panel);
Image image = Toolkit.getDefaultToolkit().getImage(mediaResourcesPath + "//" + appIcon);
if (SystemTray.isSupported()) {
System.out.println("system tray supported");
tray = SystemTray.getSystemTray();
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Exiting....");
System.exit(0);
}
};
PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Exit");
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);
defaultItem = new MenuItem("Open");
defaultItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(true);
setExtendedState(JFrame.NORMAL);
}
});
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "Tareas Italo", popup);
trayIcon.setImageAutoSize(true);
} else {
System.out.println("System tray not supported");
}
addWindowStateListener(new WindowStateListener() {
public void windowStateChanged(WindowEvent e) {
if (e.getNewState() == ICONIFIED) {
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to tray");
}
}
if (e.getNewState() == 7) {
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to system tray");
}
}
if (e.getNewState() == MAXIMIZED_BOTH) {
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
if (e.getNewState() == NORMAL) {
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
}
});
setIconImage(image);
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to tray");
}
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void start(String[] args) {
File f = new File("");
f = new File(f.getAbsolutePath() + "/conf/running.conf");
f.delete();
Logger.getTrace().debug("Iniciando");
AWidget italoW = new AWidget();
System.out.println("Instancia");
new NotifyManager(italoW);
}
public static void stop(String[] args) {
try {
File f = new File("");
f = new File(f.getAbsolutePath() + "/conf/running.conf");
FileWriter fw = new FileWriter(f);
fw.append("false");
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
if(args != null && args.length >0) {
if("stop".equals(args[0])) {
File f = new File("");
f = new File(f.getAbsolutePath() + "/conf/running.conf");
FileWriter fw = new FileWriter(f);
fw.append("false");
fw.close();
} else {
File f = new File("");
f = new File(f.getAbsolutePath() + "/conf/running.conf");
f.delete();
}
}
Logger.getTrace().debug("Iniciando");
AWidget italoW = new AWidget();
System.out.println("Instancia");
new NotifyManager(italoW);
} catch(Throwable th) {
Logger.getTrace().debug("ERROR:::" + th.getMessage());
}
}
public void finish(){
tray.remove(trayIcon);
dispose();
}
}感谢您的帮助。
java桌面程序与服务交互_Java作为具有交互式桌面支持的Windows服务并读取curren登录用户...相关推荐
- 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )
文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...
- 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 创建 Qt 桌面程序 | 构建并运行 Qt 桌面程序 )
文章目录 一.创建 Qt 桌面程序 二.构建并运行 Qt 桌面程序 一.创建 Qt 桌面程序 首先要安装 Qt 开发环境 , 参考 [Qt]Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt ...
- java 脚本语言交互_Java学习笔记--脚本语言支持API
Java语言的动态性之脚本语言支持API 随着Java平台的流行,很多的脚本语言(scripting language)都可以运行在Java虚拟机啊上,其中比较流行的有JavaScript.JRuby ...
- java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题
最近开发了个java程序,打成 jar 包想要在windows后台运行,于是使用JavaService.exe进行windows服务注册,服务注册很成功,但是在启动时显示"服务无法启动&qu ...
- Java桌面程序开发——如何开发美观漂亮好看的桌面程序
大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...
- 【转】Java桌面程序开发——如何开发美观漂亮好看的桌面程序
大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...
- java小程序之学生信息_java小程序之学生信息录入界面
小程序我的项目下载链接:点击打开链接 因为这学期比赛太多,蓝桥杯,团体程序设计大赛,ACM省赛等原因基本这学期的课程都没上,比赛完后开始去上课,java老师让用java写一个学生信息录入界面,把界面中 ...
- android系统更新桌面程序吗,为老人准备的安卓手机桌面程序:Big Launcher
随着年龄渐长,老周先生的视力也渐渐不行了.眼瞅着老爸看报看手机那种费力的样子,小周真有点心疼.这天,小周给老爸的手机下载了一个Big Launcher(大桌面)软件.老周先生看着手机上特大的图标和字号 ...
- windows桌面程序开发_每个软件开发人员都需要的6个Windows桌面实用程序
windows桌面程序开发 大多数在Windows上工作的软件开发人员都有相当标准的工具集:代码编辑器或IDE: Git或其他版本控制系统: 消息传递客户端(Slack或其克隆之一),等等. 由于大多 ...
最新文章
- dmmbus地址_dmmbus新地址是多少_动漫台
- 基本url是由协议服务器,http协议基础之URL
- 【教女朋友学网络系列3】之手把手教她明白交换机的基本原理
- Spring学习笔记(三)
- FL-EM7688 Smart评估板openwrt开发环境搭建(linux固件部分)
- 标识响应式html,第一个html5+响应式页面
- javadoc文档的生成方法_Cocoa 代码注释与文档生成
- linux文件或目录权限修改后如何恢复(备份了权限就能恢复)
- LTE下行DC子载波为0的原因解释
- oracle导入dmp报20000,imp导入dmp文件报:IMP-00038: 无法转换为环境字符集句柄IMP-00000: 未成功终止导入...
- [人工智能-综述-3]:人工智能与硅基生命,人类终将成为造物主
- 计算机键盘的认识,认识键盘和使用键盘的方法
- win10 联想键盘快捷键关闭_Win10电脑不用鼠标怎么关机键盘与快捷键关机技巧
- TAP流量复制器在网络流量采集中的应用
- POWER BI:SSAS表格建模(转自博客园,ps:部分已修改)
- 为什么推广ipv6?以及网站ipv6如何改造?
- Linux的Sed命令详解
- UJN_c++_Contest4735
- BUUCTF [FlareOn2]elfie
- 生僻字用计算机弹的数字,抖音生僻字计算器乐谱完整版 抖音生僻字计算器数字简谱...