如何在 JDesktopPane 的后台创建 JLabel?
How do I create a JLabel in the background of a JDesktopPane?
我正在使用具有拖放功能的 JDesktopPane
,到目前为止一切顺利,但我想在 [=17= 的中心添加一个 JLabel
] 这纯粹是出于装饰目的,类似于“将文件拖放到此处”。如果可能的话,我希望它总是在后台,即使他们前面有 JInternalFrame
。
我在这里还没有真正找到任何可以解决我的问题的东西,我正处于放弃这个想法并让我的程序保持原样的边缘。如果这个问题已经有解决方案,但我还没有找到,请告诉我,我会立即删除这个问题。
覆盖 JDesktopPane
的 paintComponent(...)
方法。
代码可能类似于:
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 教程部分,了解有关自定义绘画的更多信息并了解其工作原理。
我正在使用具有拖放功能的 JDesktopPane
,到目前为止一切顺利,但我想在 [=17= 的中心添加一个 JLabel
] 这纯粹是出于装饰目的,类似于“将文件拖放到此处”。如果可能的话,我希望它总是在后台,即使他们前面有 JInternalFrame
。
我在这里还没有真正找到任何可以解决我的问题的东西,我正处于放弃这个想法并让我的程序保持原样的边缘。如果这个问题已经有解决方案,但我还没有找到,请告诉我,我会立即删除这个问题。
覆盖 JDesktopPane
的 paintComponent(...)
方法。
代码可能类似于:
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 教程部分,了解有关自定义绘画的更多信息并了解其工作原理。