我有一个设置,主JFrame中有几个JInternalFrame。我想要做的是在主JFrame上绘制一些东西,但在JInternalFrame下。如果我设置像
这样的代码public void paint(Graphics graphics){
try{
Graphics2D g = (Graphics2D) s.getDrawGraphics();
super.paint(g);
super.paintComponents(g);
//Insert Paint Code Here
s.show();
super.repaint();
}catch(Exception ex){}
}
绘制的内容显示在JInternalFrames(JDesktopFrame下的组件)之上。如果我尝试将绘画代码放在super.paint(g)
或super.paintComponents(g)
之前,则绘制的内容根本不会显示。我如何制作它以使绘制的内容显示,但在内部框架下?
注意:s
是一个BufferStrategy,该类继承自抽象的JFrame类。
答案 0 :(得分:2)
您似乎无法理解绘画在Swing中的工作原理,请查看Painting in AWT and Swing和Performing Custom Painting以获取更多详细信息。
基本上,如果你想在JInternalFrame
下绘制一些东西,那么首先要覆盖paintComponent
的{{1}}方法。 JDesktopPane
方法是绘制链中最低的虚拟级别,其上绘有paintComponent
和paintBorder
paintChildren