繁体   English   中英

是否可以在JFrame上绘制图像或文本?

[英]Is it possible to draw an image or text on a JFrame?

是否可以在不添加JPanel情况下绘制JFrame

我重写paintComponents()但什么也没显示。

 @Override
public void paintComponents(Graphics g) {
    super.paintComponents(g);
    g.drawString("for test", 10, 10);
}

以防万一有人仍然坚持直接在顶层Window上绘画( 建议这样做),这是怎么做的(因为在另一个答案中链接的代码段完全是错误的)

    JFrame frame = new JFrame("funny ...") {

       @Override
       public void paint(Graphics g) {
           super.paint(g);
           g.drawString("for test", 150, 150);
       }

    };
    frame.getRootPane().setOpaque(false);
    ((JComponent) frame.getContentPane()).setOpaque(false);

显然,要使它一直发光,上面的所有内容(按Z顺序)必须不透明。

干杯珍妮特

似乎有可能。 检查先前的SO帖子以了解如何完成。

JFrames在其顶部具有GlassPane,可用于图形。 在这里,您有一个简单的示例,展示了如何使用它。

是的。 您将需要使用JFrame中的一个窗格,例如内容窗格或玻璃窗格 ,您可以通过getContentPane等访问这些窗格

例如,内容窗格是Container ,具有多种添加方法。 为此,您可以添加任何组件 -不必专门是JPanel。 更多有关使用顶级容器的信息

但是,通常,绘制是通过覆盖绘制(对于AWT)或paintComponent(对于Swing)完成的。 这意味着您需要在框架中放入某种Component或JComponent 有关2D图形教程的更多信息。 您为什么不想更改它?

您还可以覆盖JFrame及其内容窗格,并具有一个带有重写paintComponent方法的内容窗格。

但是,我质疑直接使用JFrame的必要性和智慧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM