高手不要懒,来看一下。好心人们请顶一下。谢谢了
我有几个问题,我发了很帖子都没有得到答案,在此归纳一下,重发帖,希望各位多多支持,顶一下,如果我得到了答案可以向我发邮件索要。
问题一:如何实现系统托盘图标
在网上看了很多实现系统托盘图标的帖子,但都大同小异:借用dll动态链接库,用JAVA JNI实现。我想的是有没有用纯JAVA实现的系统图标?它应该不依赖于OS的,能在Windows下实现,在Linux下也可以运行实现的?!
问题二:监听全局热键
就像QQ一样按 "Ctrl+Alt+z "组合键就显出界面的。
我尝试过添加:
Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.addAWTEventListener(new testListener(), AWTEvent.KEY_EVENT_MASK);
监听:
class testListener implements AWTEventListener {
public void eventDispatched(AWTEvent event) {
if(){Do}
}
}
可是当窗口失去焦点后就没有反应了。
问题三:求一个组件或者方法
希望这个组件能像Windows文件浏览器一样能够实现大图标、小图标、列表、详细信息等功能,最好有监听在图标上的单击、双击、右击。用基本组件来实现的方法也可以。
问题四:改变Image的像索大小
一个图像的大小的为:100*100,格式为jpg,类为Image(其他图像类也可以)。要改变它的大小,比如要把它变为32*32大小作为图标在组件里显示出来,如在JLable里显示出来。
相信高手是不会在乎分数的,为表我的诚意我把所有的分都帖出来了,如果我得分了还会再全部加上去。
请各位多多支持,如果不方便在这里留下文件之类的欢迎给我E-mail: ljggnh@163.com。
如果结帖了,说明我已经得到了答案或者一部分答案,欢迎你给我发邮件向我索要。
罗嗦了,对不起啦,请各位支持,顶~!
切磋才会更快进步。
有兴趣可加群:34317592
[解决办法]
不会玩
up
[解决办法]
汗。。。。。不会
帮顶,看看有没有人答出来
[解决办法]
第一个问题我也想过,但不知道怎么做!第二个问题,只是一个想法,我说说,要定义全局热键是不是得在系统里注册呢???否则,失去焦点就很有可能导致热键失效!
仅供参考!!!
[解决办法]
关注先~
3,4应该不难吧
[解决办法]
关注下
[解决办法]
帮忙顶下!
[解决办法]
关注ing~~~~~~~
[解决办法]
关注...
[解决办法]
focus```
[解决办法]
看了 顶了 继续关注
[解决办法]
好长,路过,帮顶
[解决办法]
ding
[解决办法]
路过
[解决办法]
看到你的题目就帮你顶一下/
[解决办法]
问题四,现成写了一个截屏的.保存时可以自己设定大小.
public class CopyScreen {
private int screenWidth = 0;
private int screenHeight = 0;
private BufferedImage image = null;
public CopyScreen() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
screenWidth = dim.width;
screenHeight = dim.height;
}
public int getScreenWidth() throws Exception {
if (screenWidth > = 0)
return screenWidth;
else
throw new Exception( "Width is zero! ");
}
public int getScreenHeight() throws Exception {
if (screenHeight > = 0)
return screenHeight;
else
throw new Exception( "Height is zero! ");
}
public BufferedImage getScreenImage(int x,int y, int width, int height)
throws AWTException {
if (image == null)
this.readScreen(x,y,width,height);
if (image != null)
return image;
else
return null;
}
public void rest() {
image = null;
}
public InputStream writeToFile(File filename, String fileType)
throws IOException {
if (image == null)
return null;
boolean ok = ImageIO.write(image,fileType, filename);
if (ok) {
return new DataInputStream(
new FileInputStream(filename));
} else {
return null;
}
}
public boolean writeToStream(OutputStream outStream, String type)
throws IOException {
if (image == null)
return false;
return ImageIO.write(image,type,outStream);
}
public void setSize(Rectangle rect) throws Exception {
/*BufferedImage newImage = null;
if (image != null) {
newImage = new BufferedImage(
rect.width,rect.height,BufferedImage.TYPE_INT_RGB);
int width = newImage.getWidth();
int height = newImage.getHeight();
//Graphics draw = newImage.createGraphics();
//draw.drawRect(rect.x,rect.y,rect.width,rect.height);
//draw.drawImage(image,rect.x,rect.y,rect.width,rect.height,null);
image = newImage;
} else {
throw new Exception( "Image is null! ");
}*/
if (image != null) {
double ratio = 0.0;
int newWidth = rect.width;
int newHeight = rect.height;
if (newWidth > newHeight) {
ratio = new Integer(newWidth).doubleValue() / image.getWidth();
} else {
ratio = new Integer(newHeight).doubleValue() / image.getHeight();
}
AffineTransformOp op = new AffineTransformOp
(AffineTransform.getScaleInstance(ratio, ratio), null);
image = op.filter(image,null);
}
}
protected void readScreen(int x, int y , int width, int height)
throws AWTException {
image =
new Robot().createScreenCapture(
new Rectangle(x,y,width,height));
}
public static void main(String[] args) throws Exception {
CopyScreen screen = new CopyScreen();
screen.getScreenImage(0,0,screen.getScreenWidth(), screen.getScreenHeight());
screen.setSize(new Rectangle(0,0,800,600));
InputStream in = screen.writeToFile(new File( "c:/screen1.jpg "), "JPG ");
screen.rest();
screen.getScreenImage(0,0,screen.getScreenWidth(), screen.getScreenHeight());
screen.setSize(new Rectangle(0,0,800,600));
in = screen.writeToFile(new File( "c:/screen2.png "), "PNG ");
}
}
[解决办法]
只懂WEB
[解决办法]
收藏先
[解决办法]
好长,看不明白。
顶一下
[解决办法]
TrayIcon 可以解决你的托盘问题,当然他不仅仅是在1.5或者1.6中,1.4也可以的,它是个小项目。你可以在网上搜一下。
问题三,你说的这个叫 查看文件方式,这个和平台有关,我做过,但是不理想,所以就不献丑了,你解决了告诉我一下。
至于问题二,建议你把它做成系统服务看怎么样,应为Java目前做不到那么底层去,
呵呵,
希望尽快解决这些问题,让大家见见世面。
[解决办法]
友情up!
[解决办法]
好题目 研究一下 学习中
[解决办法]
路过,顶
[解决办法]
$ zz ] . $
$ z(o-.-o)(o-.-o) . $
$ ┏~ ̄~ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $
[解决办法]
学习中
顶一下
Up
[解决办法]
sourceforge
systray
[解决办法]
接分拉~~~~~
[解决办法]
楼主不会是只会java吧。操作系统应该学过吧。1、2不调用系统资源根本就不可能做到。
[解决办法]
JavaService,把JAVA程序注册成windowNT系统服务.
google一下,应该就有教程.
[解决办法]
JavaService
下载地址:http://javaservice.objectweb.org/
[解决办法]
只能帮你顶一下。。。
[解决办法]
收藏加关注。
[解决办法]
mark
[解决办法]
问题一:如何实现系统托盘图标
Java6支持系统托盘图标,之前的版本只能使用JNI
问题二:监听全局热键
说实话我也不会,但我敢肯定常规的方法肯定不行,在窗口失去焦点时就不行了。不知道这里使用JNI是否可行,也有可能JVM有相关的钩子给我们使用
问题三:求一个组件或者方法
这个比较复杂,不过也就是IO文件系统 + Swing/SWT实现
问题四:改变Image的像索大小
这个你不需要去修改图像文件数据,只需要在组件中显示图片的时候设置组件的大小。如JLabel的size...当然,图像的大小别太离谱,1024 * 768的图你非要在一个10 * 10的组件上显示...
[解决办法]
关注、学习。
[解决办法]
我不懒。只是不是高手。。上来MARK!
[解决办法]
有一个“加速器”的概念不知道可不可以用!“加速器”就是在不打开菜单的情况下选择菜单项的快捷键。
通过setAccelerator方法可以将加速器关联到一个菜单项
eg:
......
JMenuItem open = new JMenuItem( "open ");
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
......
[解决办法]
mark up !
我不是高手 帮顶!
[解决办法]
问题二是不可能用纯java解决的
问题一也不过是sun公司帮你实现了各个系统平台的底层调用 所谓的纯java也不过是封装了底层调用
这种全局监听肯定要注册到系统的快捷键里面去 在win下面 不用jni 怎么注册进去
要按你的想法的话 估计win上的jvm也要用纯java实现
[解决办法]
帮顶!
[解决办法]
这不是一般的高手能回答的
除了up还是up~~!
[解决办法]
撇开程序实现细节不谈,先谈谈你的需求
需求一,在各种平台上实现托盘图标
托盘图标是Windows的独有特征,你所说的Linux也有,可能说的是GNOME或者KDE的外形类似的
GUI,但是,实现方式,以及编程实现方式是不同的,我没有做过所以不对实现细节多说,就算
LINUX的Xwindow都实现托盘图标这个UI元素,API也会因为设计的不同有很多不同,你所说的Java OS-independant不错,但是他的Independant是以OS共同特性,或者说计算机的相同特性为基础的,不是完全的跨平台,这点你要搞清楚
需求二类似,不多说了
希望各位批评指正。
[解决办法]
太高深了,不明白
[解决办法]
不明白,帮顶
[解决办法]
mark