首页 新闻 赞助 找找看

java,关于图形界面的

0
悬赏园豆:5 [已关闭问题] 关闭于 2012-12-04 11:48
package 裁判评分;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;



public class caipanJFrame extends JFrame implements ActionListener,qudiaozuigaoyuzuidifen//,WindowListener
{
    
    
    JPanel p1=new JPanel(); 
    JPanel p2=new JPanel(); 
    JPanel p3=new JPanel(); 
    JLabel b1=new JLabel("裁判人数");
    TextField t1=new TextField("",7);
    TextField t2=new TextField("",7);
    JButton button1=new JButton("平均分");
    JButton button2=new JButton("添加");
    
    
    public caipanJFrame()
    {
        super("模拟裁判评分");
        //this.setBounds(280, 100,1000, 1500);
        this.setSize(300, 300);
        this.setBackground(Color.lightGray);
        //this.setLayout(new GridLayout(3,1));
        this.add(p1,BorderLayout.NORTH);
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
        //p1.setLayout(new GridLayout(1,3));
        p1.add(b1);
        p1.add(t1);
        p1.add(button2);
        
        this.add(p2,BorderLayout.CENTER);
        //this.add(p3);
        button2.addActionListener(this);
        
        p2.setLayout(new FlowLayout());
        
        //p3.setLayout(new GridLayout(1,2));
        p3.add(button1);
        p3.add(t2);
        this.add(p3,BorderLayout.SOUTH);
        button1.addActionListener(this);
        
        
        
        
        
        //this.addWindowListener(this);

        this.setVisible(true);
        
    }
    
    
    public void actionPerformed(ActionEvent e)
    {
        int n;    
        n=Integer.parseInt(t1.getText());
        JTextField t[]=new JTextField[n];
                                          
        if (e.getSource()==button2)//如果点击添加按钮
        {            
            int m;    
            
            for(m=0;m<t.length;m++)
            {
                t[m]=new JTextField("",7);
                p2.add(t[m]);    
                this.show(true);
                
            }
        }
        if (e.getSource()==button1)//如果点击平均分按钮
        {
            
            int i;            
            double shuzhi[]=new double[n];
            String pingjunfen;                   
            
            for(i=0;i<t.length;i++)
            {
                
                try             
                 {                 
                     shuzhi[i] = Double.parseDouble(t[i].getText()); //将文本行字符串转换成浮点数        
                 }             
                 catch(NumberFormatException nfe)            
                 {                
                     JOptionPane.showMessageDialog(this, t[i].getText()+"字符串不能转换为浮点数请重新输入。");          
                 }        
            }
            
            pingjunfen=String.valueOf(qudiaozuigaoyuzuidifen(shuzhi));
            t2.setText(pingjunfen);

        }
            
        
    }
    
    
    public void windowClosing(WindowEvent e)
      {
            System.exit(0);
      }
    
    public static void main(String arg[])
    {
        new caipanJFrame();
        System.out.println("c");
    }


    
    public double qudiaozuigaoyuzuidifen(double a[]) 
    {
        int i;
        double zongzhi=0;
        double pingjunfen;
        for(i=0;i<a.length;i++) 
        {
            zongzhi+=a[i];
        }
        
        
        pingjunfen=zongzhi/a.length;
        
        return pingjunfen;
    }


    @Override
    public double qudiaozuigaoyuzuidifen() {
        // TODO Auto-generated method stub
        return 0;
    }


    
    



    
}

程序运行后,点击平均分后会出现错误,没有计算的结果显示,其中一个错误是

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at 裁判评分.caipanJFrame.actionPerformed(caipanJFrame.java:91)

左手、右手的主页 左手、右手 | 初学一级 | 园豆:78
提问于:2012-11-14 19:19
< >
分享
所有回答(1)
0
JTextField t[]=new JTextField[n];
t放到外面做为全局变量,new JTextField[n];放到button2的点击事件里。
向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-14 19:40

能不能详细一点啊,是不是将int n;   
        n
=Integer.parseInt(t1.getText());
        JTextField t[]
=new JTextField[n];放到JButton button2=new JButton("添加");后面?

然后”new JTextField[n];放到button2的点击事件里“是什么意思啊?new JTextField[n];不能单独用的啊

麻烦啦帮忙解决啊

支持(0) 反对(0) 左手、右手 | 园豆:78 (初学一级) | 2012-11-14 22:37

@左手、右手: 

你这t是局部变量啊,每次点击平均又初始化了一遍。。。

把t作为全局变量,初始化t的代码放在第一个if里面。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-11-14 23:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册