在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); } 

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

编辑:没关系 – 油漆必须是油漆。 我道歉。

在给定的代码中,您想要的是什么

  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); } } } 

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

  • 放在那里JPanel

  • 来自JFrame getContentPane

2)对于Swing JComponentspaintComponent()而不是paint() ,否则你的绘画无法正确绘制

3)另一种选择是:

  • 绘制到JFrame's RootPane

  • 涂到JFrame's GlassPane

4)更多2D图形教程