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)的坐标系?
解决方案 »
- 数据库操作时出现java.lang.NullPointerException问题
- applet为何不能正常显示,仅由一个 灰色区域,请高手指教
- properties文件,无法打入jar包
- 怎样再JSP页面设置超时,会的进来解决下,不会的进来看看热闹,谢谢
- 求数组下标的问题
- 30分买个解答、急
- 有没有朋友,一起写关于"工作流"软件
- 小问题,回答后马上给分!
- 用JCreator写的一个APPLET程序运行正常,在IE窗口中运行HTM文件却显示小程序载入失败?为什么呀?
- html转word,如何通过程序实现Mathml源代码转到Word能正常显示公式
- java线程问题?希望高手帮一下,我都弄了一天了,谢谢各位了(这是代码部分,不知道为什么不能修改原帖)
- java线程问题?希望高手帮一下,我都弄了一天了,谢谢各位了
由于drawString中的坐标是指输出串的左下角的坐标,因此“S”已经输出了,但在Panel的外面而已。
若用g.drawLine(0, 0 , 5, 0);就可得到一条短横线
换成
g.drawString("S", 50, 50);
这样就可以看到了