作者sbrhsieh (偶尔想摆烂一下)
看板java
标题Re: [问题] 请问如何不让panel上的物件跑到下层
时间Fri Oct 30 14:44:14 2009
※ 引述《yuntechvb (云宝宝)》之铭言:
: ※ 引述《conanist (QQ)》之铭言:
: : PO 你的原始码这样大家比较好解决
: jPanel1 = new JPanel(){
: public void paint(Graphics g){
: super.paintComponent(g);
: Graphics2D g2d = (Graphics2D) g;
: g2d.scale(0.5, 0.5);
: g2d.drawImage(temp.getImage(), 0, 0, null);
: }};
实际上的问题并不是其他的元件(label, button)跑到 panel 下面,而是被你
不合格的地图 panel 给牺牲了。你实做的地图 panel 不是一个正确的 container,
如果你想把此 panel 当作 container 使用,你就要让他负起身为 container 的
责任。
原本 JPanel 的 paint method 实做是合格的 container 应有的行为,而你实做
的 paint method 是调用了 super.paintComponent 之後绘制地图底图。
super.paintComponent 只负责 JPanel 本身应有的外观(不包括 border 与其内的
child components),所以你实做的地图元件实际上已不是一个 container,因为
他在绘图时只顾着自己,不顾 child component(只有 heavy-weight child
component 能够保持外观,其余放进地图 panel 里的 light-weight component
都没有机会呈现自己的外观)。
或许你只是笔误而已,你原本想要 override 的是 paintComponent method。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.128.39
※ 编辑: sbrhsieh 来自: 218.173.128.39 (10/30 14:45)