如何在JInternalFrame下确保绘画?

时间:2015-11-01 22:30:21

标签: java swing user-interface paint jinternalframe

我有一个设置,主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类。

1 个答案:

答案 0 :(得分:2)

您似乎无法理解绘画在Swing中的工作原理,请查看Painting in AWT and SwingPerforming Custom Painting以获取更多详细信息。

基本上,如果你想在JInternalFrame下绘制一些东西,那么首先要覆盖paintComponent的{​​{1}}方法。 JDesktopPane方法是绘制链中最低的虚拟级别,其上绘有paintComponentpaintBorder

DesktopPane

paintChildren