在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 JComponents
是paintComponent()
而不是paint()
,否则你的绘画无法正确绘制
3)另一种选择是:
-
绘制到
JFrame's RootPane
-
涂到
JFrame's GlassPane
4)更多2D图形教程