求教大神们2个GUI编程中的问题。。。

时间:2022-06-22 11:15:22
1:如何让Swing的串口程序类似于QQ一样?接受到消息的时候任务拦出现黄色的闪动?网上找了很久也没有找到合适的例子,希望大神最好能给出代码!谢谢。
2:我也不知道算不算是一个算法问题:一个界面上有N张图片,有一个初始化按钮,当我点击初始化按钮的时候,N张图片如何根据屏幕的大小,以及图片的大小、张数自动调整相应的比例及排序,使图片能够完整并全部的显示在界面上。
注:初始化的时候图片的大小也要根据具体的张数来调整图片的大小。因为初始化的时候可能有N多张图片,要全部显示在界面上,所以图片的大小也随时会变。。。求大神。。。。最好能给出代码,感激不尽。。!!

13 个解决方案

#1


为什么没有一个人。。。晕!

#2


没人顶,我自己来。。。

#3


1
闪动可能要自己做一些处理,如果是显示有消息,可以用
TrayIcon的displayMessage方法

SystemTray st = SystemTray.getSystemTray();
TrayIcon ti = new TrayIcon(...);
st.add(ti);
在收到消息的时候,调用
ti.displayMessage("QQ", "xxx传来的消息", TrayIcon.MessageType.INFO);

2
可以通过Image的getScaledInstance来获得缩放尺寸的实例
Image img = Toolkit.getDefaultToolkit().creatImage("xxx.gif");
img = img.getScaledInstance(缩放宽, 缩放高, Image.SCALE_SMOOTH);
根据缩放后的大小,设置位置就可以了

 

#4


引用 3 楼  的回复:
1
闪动可能要自己做一些处理,如果是显示有消息,可以用
TrayIcon的displayMessage方法

SystemTray st = SystemTray.getSystemTray();
TrayIcon ti = new TrayIcon(...);
st.add(ti);
在收到消息的时候,调用
ti.displayMessage("QQ", "xxx传来的消息",……


嗯,第一个问题解决了,跟大神说的做法差不多,通过系统托盘解决了。
但第二个问题,我想大神是不是没有理解清楚我的意思,请大神仔细看看我的第二个问题。为了让N张图片完整的显示在屏幕上,我求的是根据显示屏的大小、图片的张数、以及能让所以的图片完整的显示在显示屏上面。那么图片的宽、高、以及图片之前的间距各是多少?当我点击初始化按钮时,我想通过某个公式自动求出这些值...求大神给出公式。。。

#5


引用 3 楼  的回复:
1
闪动可能要自己做一些处理,如果是显示有消息,可以用
TrayIcon的displayMessage方法

SystemTray st = SystemTray.getSystemTray();
TrayIcon ti = new TrayIcon(...);
st.add(ti);
在收到消息的时候,调用
ti.displayMessage("QQ", "xxx传来的消息",……


大牛给你举个例子吧,看这个公式你能不能帮我求出来:
假如已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。

#6


该回复于2012-04-18 12:58:14被版主删除

#7


假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。

#8


为啥帖子这么沉??

#9


为什么木有人帮我,求帮忙。。。

#10


引用 7 楼  的回复:
假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行多少列,使得分布最合适,可以写个方法来实现,如

public class Test {
    public static void main(String[] args) throws Throwable {
        int imageCount = 100;
        int[] result = splitImage(1024, 768, imageCount);
        System.out.printf("rows=%d, columns=%d\n", result[0], result[1]);
        
        int width = 1024 / result[1];
        int height = 768 / result[0];
        System.out.printf("width=%d, height=%d\n", width, height);
        
    }

    public static int[] splitImage(int screenWidth, int screenHeight, int imageCount) {
        int[] result = {1, 0}; //保存分割的行,列

        double min = imageCount;
        double w = 0, h = 0, m = 0;
        for (int i=0; i<imageCount; i++) {
            if (imageCount % (i+1) == 0) { //优先选择能分成m行n列的方案
                h = (double)screenHeight / (i+1);
                w = (double)screenWidth / (imageCount / (i+1));
                m = Math.abs(h / w - 1); //优先选择分割后的图片的宽高比列最接近
                if (m < min) {
                    result[0] = i+1;
                    min = m;
                }
            }
        }

        result[1] = imageCount / result[0];

        return result;
    }
}

#11


引用 10 楼  的回复:
引用 7 楼  的回复:

假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行多少列,使得分布最合适,可以写个方法来实现,如

Ja……



嗯,一般情况下没什么问题,但有些时候生成的比例不是很好。。
比如:我图片张数为22的时候。生成的宽、高是:715、75.感觉这样生成的比例不和谐。。图片拉长了效果不好,请问大牛这个问题可以解决吗?

#12


引用 11 楼  的回复:
引用 10 楼 的回复:
引用 7 楼 的回复:

假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行多少列,使得分布最合适,可以写个……

要想和谐,就调整宽高比例,比如调整宽高是4:3,那么75*4.0/3 如果大于等于715就直接取715,如果小于715,就取75*4.0/3,这个比例可以自己设定

#13


引用 12 楼  的回复:
引用 11 楼  的回复:
引用 10 楼 的回复:
引用 7 楼 的回复:

假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行……

如果我想设定宽、高比例为:3比4。那我的代码应该如何改啊?请大牛给出代码,小弟愚笨。。。

#1


为什么没有一个人。。。晕!

#2


没人顶,我自己来。。。

#3


1
闪动可能要自己做一些处理,如果是显示有消息,可以用
TrayIcon的displayMessage方法

SystemTray st = SystemTray.getSystemTray();
TrayIcon ti = new TrayIcon(...);
st.add(ti);
在收到消息的时候,调用
ti.displayMessage("QQ", "xxx传来的消息", TrayIcon.MessageType.INFO);

2
可以通过Image的getScaledInstance来获得缩放尺寸的实例
Image img = Toolkit.getDefaultToolkit().creatImage("xxx.gif");
img = img.getScaledInstance(缩放宽, 缩放高, Image.SCALE_SMOOTH);
根据缩放后的大小,设置位置就可以了

 

#4


引用 3 楼  的回复:
1
闪动可能要自己做一些处理,如果是显示有消息,可以用
TrayIcon的displayMessage方法

SystemTray st = SystemTray.getSystemTray();
TrayIcon ti = new TrayIcon(...);
st.add(ti);
在收到消息的时候,调用
ti.displayMessage("QQ", "xxx传来的消息",……


嗯,第一个问题解决了,跟大神说的做法差不多,通过系统托盘解决了。
但第二个问题,我想大神是不是没有理解清楚我的意思,请大神仔细看看我的第二个问题。为了让N张图片完整的显示在屏幕上,我求的是根据显示屏的大小、图片的张数、以及能让所以的图片完整的显示在显示屏上面。那么图片的宽、高、以及图片之前的间距各是多少?当我点击初始化按钮时,我想通过某个公式自动求出这些值...求大神给出公式。。。

#5


引用 3 楼  的回复:
1
闪动可能要自己做一些处理,如果是显示有消息,可以用
TrayIcon的displayMessage方法

SystemTray st = SystemTray.getSystemTray();
TrayIcon ti = new TrayIcon(...);
st.add(ti);
在收到消息的时候,调用
ti.displayMessage("QQ", "xxx传来的消息",……


大牛给你举个例子吧,看这个公式你能不能帮我求出来:
假如已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。

#6


该回复于2012-04-18 12:58:14被版主删除

#7


假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。

#8


为啥帖子这么沉??

#9


为什么木有人帮我,求帮忙。。。

#10


引用 7 楼  的回复:
假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行多少列,使得分布最合适,可以写个方法来实现,如

public class Test {
    public static void main(String[] args) throws Throwable {
        int imageCount = 100;
        int[] result = splitImage(1024, 768, imageCount);
        System.out.printf("rows=%d, columns=%d\n", result[0], result[1]);
        
        int width = 1024 / result[1];
        int height = 768 / result[0];
        System.out.printf("width=%d, height=%d\n", width, height);
        
    }

    public static int[] splitImage(int screenWidth, int screenHeight, int imageCount) {
        int[] result = {1, 0}; //保存分割的行,列

        double min = imageCount;
        double w = 0, h = 0, m = 0;
        for (int i=0; i<imageCount; i++) {
            if (imageCount % (i+1) == 0) { //优先选择能分成m行n列的方案
                h = (double)screenHeight / (i+1);
                w = (double)screenWidth / (imageCount / (i+1));
                m = Math.abs(h / w - 1); //优先选择分割后的图片的宽高比列最接近
                if (m < min) {
                    result[0] = i+1;
                    min = m;
                }
            }
        }

        result[1] = imageCount / result[0];

        return result;
    }
}

#11


引用 10 楼  的回复:
引用 7 楼  的回复:

假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行多少列,使得分布最合适,可以写个方法来实现,如

Ja……



嗯,一般情况下没什么问题,但有些时候生成的比例不是很好。。
比如:我图片张数为22的时候。生成的宽、高是:715、75.感觉这样生成的比例不和谐。。图片拉长了效果不好,请问大牛这个问题可以解决吗?

#12


引用 11 楼  的回复:
引用 10 楼 的回复:
引用 7 楼 的回复:

假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行多少列,使得分布最合适,可以写个……

要想和谐,就调整宽高比例,比如调整宽高是4:3,那么75*4.0/3 如果大于等于715就直接取715,如果小于715,就取75*4.0/3,这个比例可以自己设定

#13


引用 12 楼  的回复:
引用 11 楼  的回复:
引用 10 楼 的回复:
引用 7 楼 的回复:

假如:已知屏幕的宽度是1024,高度是786。图片数量为100张。在不能要下拉列表的情况下,为了让100张图片能够刚好的显示在屏幕上,求该100张图片的宽度、高度、以及图片间距。。。若图片数量为5、10、70、200张。。。。。求公式。


这个应该没有什么所谓的公式吧,应该是根据需求来决定要分成多少行……

如果我想设定宽、高比例为:3比4。那我的代码应该如何改啊?请大牛给出代码,小弟愚笨。。。