1.JFrame的结构相当复杂,有四层面板。其中Swing程序员最关心的是内容窗格。
2.绘制一个组件,需要定义一个扩展JComponent的类,并覆盖其中的paintComponent方法。
class Exp extends JComponent { public void paintComponent(Graphics g) { ... } }
3.paintComponent方法有一个Graghics类型的参数,这个参数保存着用于绘制图像和文本的设置。
4.在java中,所有绘制都必须使用Graphics对象。
5.无论何种原因,只要窗口需要重新绘制,事件处理器就会通告组件,从而引发执行所有组件的paintCpmponent方法,所以一定不要自己调用该方法。
6.显式文本使用Graphics类中的drawString方法。
g.drawString(test,x,y);
实例代码
测试类
import java.awt.EventQueue; import javax.swing.JFrame; public class test { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new TextFrame(); frame.setTitle("test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } }
框架类
import javax.swing.JFrame; public class TextFrame extends JFrame{ public TextFrame() { add(new TextStr()); pack(); } }
绘制类
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JComponent; public class TextStr extends JComponent { public static final int MESSAGE_X = 75; public static final int MESSAGE_Y = 50; private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 200; public void paintComponent(Graphics g) { g.setColor(Color.RED); g.drawString("你好啊啊啊啊!!", MESSAGE_X, MESSAGE_Y); } public Dimension getPreferredSize() { return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT); } }
输出结果
原文地址:http://blog.csdn.net/zhurui_idea/article/details/44927419