我写了个应用程序,主窗口是JFrame,先在主窗口中加入一个JInternalFrame,上面有三个按钮。同时,主窗口中又加入一个JPanel,程序每隔数秒在这个panel上重绘一个BufferedImage对象,同时JInternalFrame上的按钮来控制重绘效果。现在存在的一个问题是,当panel重绘时,如果现在JInternalFrame对象在panel的绘图区域内时,就会被panel遮盖住,只有点中internalframe的titlebar移动一下才会重新出现,只要internalframe不在panel的绘图区域上就没问题.我想要的效果是,把那个internalframe始终在panel之上,就算panel重绘了也不要遮盖internalframe,并且不影响panel重绘,大家有什么好的建议吗??大概的程序结构如下:
public class Test extends JFrame {
JInternalFrame internalframe = new JInternalFrame("test");
internalframe.getContentPane().add( new JButton("ctrl1") );
internalframe.getContentPane().add( new JButton("ctrl2") );
internalframe.getContentPane().add( new JButton("ctrl3") ); this.getContentPane().add( internalframe ); PaintPanel panel = new PaintPanel();
this.getContentPane().add( panel ); // 按钮事件响应,省略
}public class PaintPanel extends JPanel {
省略...
}
public class Test extends JFrame {
JInternalFrame internalframe = new JInternalFrame("test");
internalframe.getContentPane().add( new JButton("ctrl1") );
internalframe.getContentPane().add( new JButton("ctrl2") );
internalframe.getContentPane().add( new JButton("ctrl3") ); this.getContentPane().add( internalframe ); PaintPanel panel = new PaintPanel();
this.getContentPane().add( panel ); // 按钮事件响应,省略
}public class PaintPanel extends JPanel {
省略...
}
* 【描 述】:重绘方法 绘制标题纹理
*
* @since 2011-11-18
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
protected void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(paint);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
this.add(retractAllLabel,BorderLayout.EAST);
}
用重绘!