如何在 JDesktopPane 的后台创建 JLabel?

How do I create a JLabel in the background of a JDesktopPane?

我正在使用具有拖放功能的 JDesktopPane,到目前为止一切顺利,但我想在 [=17= 的中心添加一个 JLabel ] 这纯粹是出于装饰目的,类似于“将文件拖放到此处”。如果可能的话,我希望它总是在后台,即使他们前面有 JInternalFrame

我在这里还没有真正找到任何可以解决我的问题的东西,我正处于放弃这个想法并让我的程序保持原样的边缘。如果这个问题已经有解决方案,但我还没有找到,请告诉我,我会立即删除这个问题。

覆盖 JDesktopPanepaintComponent(...) 方法。

代码可能类似于:

JDesktopPane desktop = new JDesktopPane()
{
    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);

        String text = "drag and drop here";
        FontMetrics fm = g.getFontMetrics();
        int stringWidth = fm.stringWidth( text );
        int x = (getWidth() - stringWidth) / 2;
        int y = getHeight() / 2;
        g.drawString(text, x, y);
    };
}

阅读有关 A Closer Look at the Paint Mechanism 的 Swing 教程部分,了解有关自定义绘画的更多信息并了解其工作原理。