Redian新闻
>
强制Swing绘制Panel的一个问题
avatar
r*r
2
想了好久,没有解决,请帮忙看一下,多谢!
name product total_num
A paper 3
A pen 2
A paper 3
A water 2
A water 2
A paper 3
A pen 2
变量total_num表明相关的product总共出现多少次,
现在需要选出出现最多的那个产品和次数,如下
A paper 3,
请问该怎么写query呢?多谢.
avatar
b*i
3
一个Panel里面有20多个小组件,上下排列大概500像素高。我显示这个Panel的时候,是
从Frame窗口外面向里面移动,窗口上方显示Panel最下面的组件,窗口外面的不显示,
然后Panel继续移动的时候,再多显示组件,最后整个Panel移到窗口里面就都显示了。
我发现,这个移动看起来不连续,好像是Java知道大部分组件在窗口外面,不可见,所
以根本就没有提前画好,而是发现哪个组件需要显示了就现画。
为了确认,我在Panel没有出现在窗口里面的时候调用了Panel的paint,画到了我提前
给出的一个BufferedImage,结果BufferedImage里面什么都没有。如果在Panel完全显
示在窗口里面的时候调用paint,就可以看到BufferedImage里面画了这个panel.请高手
确认,是这样吗?
那么,能强制Swing提前画好窗口外面的包含20个组件的Panel吗?
avatar
B*g
4
http://www.mitbbs.com/article_t/Database/31141034.html
那个谁,俺又用了一遍

【在 r****r 的大作中提到】
: 想了好久,没有解决,请帮忙看一下,多谢!
: name product total_num
: A paper 3
: A pen 2
: A paper 3
: A water 2
: A water 2
: A paper 3
: A pen 2
: 变量total_num表明相关的product总共出现多少次,

avatar
z*e
5
这个有点难
我一直都觉得swing有个判断
就是一旦越界,它就不再渲染了
要提前画好恐怕是不行
javafx也是一样的,当你缩放成全屏的时候
你会看到除了win那一块,再往外都是空的
avatar
r*r
6
select distinct A,B,max(C),D... from table group by A,B,D... order by
A,B,D
这个好像不行,结果是
A paper 3
A water 3
A pen 3,
但是无法选出拥有最大的total_num (3)的相应的product,
想要得结果是
A paper 3,
如何能在一步query里面,智能的找出某个变量的最大值,
并且同时选出其相应的另外一个变量值呢?

【在 B*****g 的大作中提到】
: http://www.mitbbs.com/article_t/Database/31141034.html
: 那个谁,俺又用了一遍

avatar
b*i
7
我写了个简单程序检测,居然可以在没有pack的时候把控件画到BufferedImage里面,就是
g=.....createGraphics();
JButton b=new JButton("test");
b.paint(g);就可以。
区别在哪里呢?原来只要这个空间的大小是知道的,就可以画出来。后来我设定控件的
大小后,能够画出来最外面的框架,但是内部是空的,因为内部那些控件我是靠
LayoutManager来自动放置的,所以还是不行。我估计如果能够全部给出内部所有控件
的大小和位置,那么这个控件可以在没有出现在屏幕上的时候画出来到BufferedImage
里面去。

【在 z****e 的大作中提到】
: 这个有点难
: 我一直都觉得swing有个判断
: 就是一旦越界,它就不再渲染了
: 要提前画好恐怕是不行
: javafx也是一样的,当你缩放成全屏的时候
: 你会看到除了win那一块,再往外都是空的

avatar
B*g
8
you need to continue read that post.

【在 r****r 的大作中提到】
: select distinct A,B,max(C),D... from table group by A,B,D... order by
: A,B,D
: 这个好像不行,结果是
: A paper 3
: A water 3
: A pen 3,
: 但是无法选出拥有最大的total_num (3)的相应的product,
: 想要得结果是
: A paper 3,
: 如何能在一步query里面,智能的找出某个变量的最大值,

avatar
s*e
9
my understanding is that swing uses off-screen double buffering to draw the
affected rectangles. It is the repaintmanager's job to decide which area
needs to be redrawn based on the visibility and many other factors.
since an awt component is talking to os /hardware directly, it will always
appear on top of the swing component even it means out of the boundary.
if you do not want to change the repaintmanager, which I think it would be
quite hard, you might want to introduce awt component. But awt doesn't use
double buffering, so you might suffer some side effects, such as flickering.
..
avatar
r*r
11
Thanks a lot!
That works very well.

【在 B*****g 的大作中提到】
: you need to continue read that post.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。