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