大家帮下!

wangju466511977 2008-02-19 09:39:24
1 import java.awt.*;
2 import javax.swing.*;
3 public class Study {
4 private JLabel lb1=new JLabel("姓名:");
5 private JLabel lb2=new JLabel("班级:");
6 private JTextField tf1=new JTextField(10);
7 private JTextField tf2=new JTextField(10);
8 private JFrame f=new JFrame();
9 private JPanel panel=new JPanel();
10 public Study(){
11 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
12 Container cp=f.getContentPane();
13 panel.setLayout(new GridLayout(2,2,10,10));
14 panel.add(lb1);
15 panel.add(tf1);
16 Graphics g=panel.getGraphics();
17 Graphics2D g2=(Graphics2D)g;
18 g2.setPaint(Color.RED);
19 g2.drawLine(0,100,panel.getWidth(),100);
20 panel.add(lb2);
21 panel.add(tf2);
22 cp.add(panel);
23 f.setSize(200,200);
24 f.setVisible(true);
25 }
26 public static void main(String args[]){
27 new Study();
}
}

为什么上面的程序会发生下面的错误?
Exception in thread "main" java.lang.NullPointerException
at Study.<init>(Study.java:18)
at Study.main(Study.java:27)
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxo84 2008-02-19
  • 打赏
  • 举报
回复
new study()不是静态方法? 这里是在创建实例!

setPaint方法放到Paint方法中,也就是说重写Paint方法,但不要调用这个方法

import java.awt.*;
import javax.swing.*;

public class Test5 extends JFrame
{
private JLabel lb1=new JLabel("姓名:");
private JLabel lb2=new JLabel("班级:");
private JTextField tf1=new JTextField(10);
private JTextField tf2=new JTextField(10);
private JFrame f=new JFrame();
private JPanel panel=new JPanel();
public Test5()
{
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp=f.getContentPane();
panel.setLayout(new GridLayout(2,2,10,10));
panel.add(lb1);
panel.add(tf1);
Graphics g=panel.getGraphics();
Graphics2D g2=(Graphics2D)g;
panel.add(lb2);
panel.add(tf2);
cp.add(panel);
f.setSize(200,200);
f.setVisible(true);
}

public void paint(Graphics2D g2)
{
g2.setPaint(Color.RED);
g2.drawLine(0,100,panel.getWidth(),100);
}

public static void main(String args[])
{
new Test5();
}
}
yibunengjing 2008-02-19
  • 打赏
  • 举报
回复
16 Graphics g=panel.getGraphics();
是空值,这个Graphics 有用吗?就画一条线
wangju466511977 2008-02-19
  • 打赏
  • 举报
回复
那应该如何改呀?
cangbai217 2008-02-19
  • 打赏
  • 举报
回复
Graphics g=panel.getGraphics(); 为空
zhangyu_fox 2008-02-19
  • 打赏
  • 举报
回复
new study()不是静态方法,不能放在main中
cangbai217 2008-02-19
  • 打赏
  • 举报
回复
18 g2.setPaint(Color.RED);set了一个空,先判断下Color.RED是不是为空

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧