我的“显示数据按钮”有问题

时间:2013-10-24 12:29:24

标签: java swing user-interface add

尝试运行我的程序。按添加主题(填写数据)。然后显示。然后添加另一个主题。然后显示。

在“显示”选项卡上,它显示2个主题和1个空主题。

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

@SuppressWarnings ({"unchecked" , "rawtypes"})

public class StudentGradeCalc extends JFrame implements ActionListener {

//String setName [];
int x = 0;
int count = 0;
int w = 0;
int [] addSize = {50,10,20,30,40,100};
private JPanel panelInfo = new JPanel(new GridLayout(7,0) );
private JLabel sy = new JLabel ("School Year : ");
private JLabel sem = new JLabel ("Sem/Term: ");
private JLabel Name = new JLabel ("Name : ");
private JLabel Course = new JLabel ("Course : ");
private JLabel Year = new JLabel ("Year : ");
private JLabel college = new JLabel ("College : ");
private JLabel id = new JLabel ("I.D Number : ");

private JTextField syear = new JTextField ("");
private JTextField semnum = new JTextField("");
private JTextField name = new JTextField ("");
private JTextField course = new JTextField ("");
private JTextField year = new JTextField ("");
private JTextField scs = new JTextField("");
private JTextField idnum = new JTextField("");





private JPanel fakebuttons = new JPanel (new GridLayout (4,0,10,10));


private JButton addSubject = new JButton("Add Subject..");
private JButton deleteSubject = new JButton("Delete Subject..");
private JButton editSubject = new JButton("Edit Subject..");

private JButton totalLoad = new JButton("Total Load : ");
private JButton GPA = new JButton ("GPA : ");

private JTextField units_textfield = new JTextField(3);
private JTextField gpa_textfield = new JTextField (7);

private JButton displayInfo = new JButton("Display Data");

private JPanel addPanel = new JPanel(new GridLayout(3,2,20,10));
        private JLabel subjectName = new JLabel("Subject: ");
        private JTextField subject [] ;

        private JLabel gradeLabel = new JLabel("Grade : ");
        private JLabel unitsLabel = new JLabel ("Units : ");

        private JButton addButton = new JButton ("Add");


        String grade [] = {"1.00","1.25","1.50","1.75","2.00","2.25","2.50","2.75","3.00","5.0", "DRP", "INC", "WDRW"};
        private JComboBox comboGrade [];

        String unit [] = {"1","2","3","4","5","6"};
        private JComboBox comboUnit[];

  private JButton done = new JButton ("Done"); 
  private JButton d_subj,d_unit,d_grade;

 // private JTextField displaySubject = new JTextField();
  // private JTextField displayUnit = new JTextField ();
  //private JTextField displayGrade = new JTextField();

  private JTextField displaySubject[];
  private JTextField displayUnit[];
 private JTextField displayGrade [];

 private JLabel t_units = new JLabel ("Total Load : ");
 private JTextField totalUnits = new JTextField ();
 private JLabel gpa = new JLabel ("GPA : ");
  private JTextField gpaTxt = new JTextField ();

  private JLabel err = new JLabel ("No Entry Found");

private JLabel display1 = new JLabel ();
private JLabel display2 = new JLabel ();
private JLabel displayID = new JLabel ();

final String getName [] = new String [10];
final int getUnit [] = new int [10];
 final String getGrade [] = new String [10];

public StudentGradeCalc()
{
    Border border = BorderFactory.createLineBorder(null); 
    setLayout(null);

    panelInfo.setBounds(5,5,280,150);
    //panelInfo.setBorder(border);
    panelInfo.add(Name);
    panelInfo.add(name);
    panelInfo.add(Course);
    panelInfo.add(course);
    panelInfo.add(Year);
    panelInfo.add(year);
    panelInfo.add(sy);
    panelInfo.add(syear);
    panelInfo.add(sem);
    panelInfo.add(semnum);
    panelInfo.add(college);
    panelInfo.add(scs);
    panelInfo.add(id);
    panelInfo.add(idnum);



    add(panelInfo);

    fakebuttons.setBounds(5,160,280,160);

    fakebuttons.add(addSubject);
    fakebuttons.add(deleteSubject);
    fakebuttons.add(editSubject);
    fakebuttons.add(displayInfo);
    add(fakebuttons);

    //ADD SUBJECT BUTTON
    addSubject.addActionListener(new ActionListener (){
      public void actionPerformed (ActionEvent cags){
        final JFrame addFrame = new JFrame ();


        addFrame.setVisible(true);
        addFrame.setSize (300,190);
        addFrame.setResizable(false);
        addFrame.setLocationRelativeTo(null);
        addFrame.setTitle("Add Subject");

            //addFrame.setLayout(new GridLayout (3,2,20,10));
              addFrame.setLayout(null);

            subject = new JTextField [] {
                new JTextField (),
                new JTextField (),
                new JTextField (),
                new JTextField (),
                new JTextField (),
                new JTextField (),
                new JTextField (),
                new JTextField (),
                new JTextField (),


            };



            subjectName.setBounds (10,10,120,20);
            subject[x].setBounds (75,10,170,20);
            addFrame.add(subjectName);
            addFrame.add(subject[x]);


            gradeLabel.setBounds (10,40,100,20);
            addFrame.add(gradeLabel);
            comboGrade = new JComboBox [] {
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),
                new JComboBox (grade),

            };

            comboGrade[x].setBounds(150,40,95,20);
            addFrame.add(comboGrade[x]);

           unitsLabel.setBounds (10, 70, 95, 20);
            addFrame.add(unitsLabel);
            comboUnit = new JComboBox [] {
                new JComboBox(unit),
                new JComboBox(unit),
                new JComboBox(unit),
                new JComboBox(unit),
                new JComboBox(unit),
                new JComboBox(unit),
                new JComboBox(unit),

            };
           comboUnit[x].setBounds(150,70,95,20);
            addFrame.add(comboUnit[x]);

            addButton.setBounds (120,120,60,30);
           addFrame.add(addButton);



       w++;



            addButton.addActionListener(new ActionListener () {
                public void actionPerformed(ActionEvent k){
                    //JOptionPane.showMessageDialog(null, "Subject "+subject[x].getText()+ " has been added", "Add Subject",    JOptionPane.INFORMATION_MESSAGE);


                    getName [x] = subject[x].getText();
                    getGrade[x] = String.valueOf((String)comboGrade[x].getSelectedItem());
                    getUnit [x] = Integer.valueOf((String)comboUnit[x].getSelectedItem());
          x++;  
                    addFrame.dispose();

                }


            });



      }


     });




    //DISPLAY DATA BUTTON 
     displayInfo.addActionListener(new ActionListener (){
         public void actionPerformed(ActionEvent m){


       final String name_course_year = "Name : "+name.getText()+ "          Course : " +course.getText()+"- "+year.getText()+ "    ID : "+idnum.getText() ;
       final String ubos = "College : "+scs.getText()+ "          SY : "+syear.getText()+ "     Term : "+semnum.getText() ;
       //String nametanga []  = {name.getText() , };

         if (name.getText().equals("")|| course.getText().equals("")||year.getText ().equals("") || idnum.getText().equals("")||syear.getText ().equals("") || scs.getText().equals("")|| semnum.getText().equals(""))
             {
             JOptionPane.showMessageDialog(null, "Complete the Information!", "ERROR", JOptionPane.WARNING_MESSAGE);
             }   

         else 
         {


        final JFrame display = new JFrame ();

         display.setVisible(true);
        //display.setSize (400,200);
        //display.setSize (400,down+130); 
        display.setResizable(false);
        display.setLocationRelativeTo(null);
        display.setTitle("Student Info");
        display.setLayout(null);


        display1.setBounds (5,5,390,20);
        display2.setBounds (5,25,390,20);
        display1.setText(name_course_year);
        display2.setText(ubos);
        display.add(display1);
        display.add(display2);





        d_subj = new JButton ("Subject");
        d_unit = new JButton ("Unit");
        d_grade = new JButton ("Grade");

        d_subj.setBounds(10,50,180,20);
        d_unit.setBounds (200,50,90,20);
        d_grade.setBounds(300,50,90,20);
        display.add(d_subj);
        display.add(d_unit);
        display.add(d_grade);

        displaySubject = new JTextField [] {
            new JTextField(),
            new JTextField(),
            new JTextField(),
            new JTextField(),
            new JTextField(),
            new JTextField(),
            new JTextField(),

        };
        displayUnit = new JTextField [] {
            new JTextField(),new JTextField(),new JTextField(),
            new JTextField(),new JTextField(),new JTextField(),
            new JTextField(),new JTextField(),

        };
        displayGrade = new JTextField [] {
            new JTextField(),new JTextField(),new JTextField(),
            new JTextField(),new JTextField(),new JTextField(),
            new JTextField(),new JTextField(),
        };

        int y = 30;
        int down = 80;
        int z = 0;

        for (int i = 0; i < x; i++)
        {

        displaySubject[i].setBounds(10,down,180,y);
        displayUnit[i].setBounds(200,down,90,y);
        displayGrade[i].setBounds(300,down,90,y);


        displaySubject[i].setText(getName[i]);
        displayUnit[i].setText(""+getUnit[i]);
        displayGrade[i].setText(getGrade[i]);


        display.add(displaySubject[i]);
        display.add(displayUnit[i]);
        display.add(displayGrade[i]);

        displaySubject[i].setEditable(false);
        displayUnit[i].setEditable(false);
        displayGrade[i].setEditable(false);


        down+=y+10;

        //i++;
       // z++;
        }
           display.setSize (400,down+130); 


        t_units.setBounds (100,down,70,25);
        totalUnits.setBounds(180,down,50,25);
        gpa.setBounds(260,down,50,25);
        gpaTxt.setBounds(310,down,80,25);

        display.add(t_units);
        display.add(totalUnits);
        display.add(gpa);
        display.add(gpaTxt); 



        gpaTxt.setEditable(false);
        totalUnits.setEditable(false);

        done.setBounds (170,down+50,70,30);
        display.add(done);

        done.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent done){
                display.dispose();
            }
        });

          }

         }

     });




    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize (300,355);
setResizable(false);
setLocationRelativeTo(null);
setTitle("Student Grade Calculator"); 

}


public  void actionPerformed (ActionEvent vahn)
{
   System.exit(1);
}



public static void main(String[] args) {
    new StudentGradeCalc();
}

}

我不知道在哪里可以找到我的程序出错的原因。

1 个答案:

答案 0 :(得分:0)

我发现你的问题就在这里 addButton.addActionListener()。您总是向按钮​​实例添加一个新的ActionListener,因此,每次按 addSubject 按钮时,您还会向 addButton 添加一个新的侦听器。在将来不要这样做,在组件构造方法中将监听器添加到组件。