【问题标题】:How do I create a JLabel in the background of a JDesktopPane?如何在 JDesktopPane 的背景中创建 JLabel?
【发布时间】:2021-02-12 04:18:08
【问题描述】:

我正在使用具有拖放功能的JDesktopPane,到目前为止一切顺利,但我想在窗口中心添加一个JLabel,上面写着“拖动并把文件放在这里”纯粹是为了装饰目的。如果可能的话,我希望它始终在后台,即使它们前面有 JInternalFrames。

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

【问题讨论】:

    标签: java swing jlabel jinternalframe jdesktoppane


    【解决方案1】:

    覆盖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 教程部分,了解有关自定义绘画的更多信息并了解其工作原理。

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 2014-05-16
      • 1970-01-01
      • 2022-12-26
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多