import java.awt.*;
import javax.swing.*;public class PaintTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("S", 0, 0);
}
});
frame.setVisible(true);
}
}以上代码企图在JPanel的(0, 0)位置绘制一个String。但运行后什么也看不到。
此问题的根源在于drawString方法误以为是在整个窗口,也就是JFrame的坐标系中的(0, 0)点作画。
众所周知,窗口的(0, 0)点处于最上层的状态栏,而在状态栏上绘图是无法显示的。
那么问题就是:如何才能在画板(JPanel)的(0, 0)点上作画?或者:如何才能获取画板(JPanel)的坐标系?
由于drawString中的坐标是指输出串的左下角的坐标,因此“S”已经输出了,但在Panel的外面而已。
若用g.drawLine(0, 0 , 5, 0);就可得到一条短横线
换成
g.drawString("S", 50, 50);
这样就可以看到了