在 JFrame 上用图形对象绘制文本

新手上路,请多包涵

我是一个狂热的程序员,但今天是我的第一堂 Java 课。

 public void Paint (Graphics g)
{
    if(g instanceof Graphics2D)
    {
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    }
    g.drawString("This is gona be awesome", 200, 200);
}

用上面的代码,我想在窗口上写一句话,但它永远不会写。我究竟做错了什么?

编辑:没关系 - 油漆必须油漆。我深表歉意。

原文由 Aiden Strydom 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 445
2 个回答

在给定的代码中,你想要的是

 g2d.drawString("This is gona be awesome", 200, 200);
  ^


一个供您参考的工作示例:

 package Experiments;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class MainClass{
  public static void main(String[] args) {
    JFrame jf = new JFrame("Demo");
    Container cp = jf.getContentPane();
    MyCanvas tl = new MyCanvas();
    cp.add(tl);
    jf.setSize(300, 200);
    jf.setVisible(true);
  }
}

class MyCanvas extends JComponent {

  @Override
  public void paintComponent(Graphics g) {
      if(g instanceof Graphics2D)
      {
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);

        g2.drawString("This is gona be awesome",70,20);
       }
   }
}

原文由 COD3BOY 发布,翻译遵循 CC BY-SA 3.0 许可协议

1)不可能直接画到 JFrame ,你可以画:

  • 放在那里 JPanel

  • getContentPane 来自 JFrame

  1. 对于 Swing JComponents 是否有 paintComponent() 而不是 paint() ,否则你的画无法正确绘制

3)另一个选项是:

  • 涂到 JFrame's RootPane

  • 画到 JFrame's GlassPane

  1. 更多 2D 图形 教程

原文由 mKorbel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题