简体   繁体   中英

JTextField is not updated by clicking button

In my java project, I want to see each student's info by entering roll number. When at first time, I enter roll number, the result comes. But if I want to see other student's roll number in same window, the result is no come. What's the problem in my code? The screen shot is given below:when I change roll number, the image and other info is not updated.

在此处输入图片说明

    public void actionPerformed(ActionEvent e)
    if(e.getSource()==button)
    {

    l1= new JLabel("Name: ");
    l1.setForeground(Color.white);
    l1.setFont(new Font("Serif", Font.BOLD, 15));
    l1.setBounds(100,100,150,20);
    //l1.setLabelFor(tf1);

    l2= new JLabel("Mobile Number: ");
    l2.setForeground(Color.white);
    l2.setFont(new Font("Serif", Font.BOLD, 15));
    l2.setBounds(100,150,150,20);
    //l1.setLabelFor(tf2);

    l3= new JLabel("Father's Name: ");
    l3.setForeground(Color.white);
    l3.setFont(new Font("Serif", Font.BOLD, 15));
    l3.setBounds(100,200,150,20);

    l4= new JLabel("Mobile Number: ");
    l4.setForeground(Color.white);
    l4.setFont(new Font("Serif", Font.BOLD, 15));
    l4.setBounds(100,250,150,20);

    l5= new JLabel("Mother's Name: ");
    l5.setForeground(Color.white);
    l5.setFont(new Font("Serif", Font.BOLD, 15));
    l5.setBounds(100,300,150,20);

    l6= new JLabel("Mobile Number: ");
    l6.setForeground(Color.white);
    l6.setFont(new Font("Serif", Font.BOLD, 15));
    l6.setBounds(100,350,150,20);

    l7= new JLabel("Village: ");
    l7.setForeground(Color.white);
    l7.setFont(new Font("Serif", Font.BOLD, 15));
    l7.setBounds(100,400,150,20);

    l8= new JLabel("Police Station: ");
    l8.setForeground(Color.white);
    l8.setFont(new Font("Serif", Font.BOLD, 15));
    l8.setBounds(100,450,150,20);

    l9= new JLabel("District: ");
    l9.setForeground(Color.white);
    l9.setFont(new Font("Serif", Font.BOLD, 15));
    l9.setBounds(100,500,150,20);

    l10= new JLabel("Blood Group: ");
    l10.setForeground(Color.white);
    l10.setFont(new Font("Serif", Font.BOLD, 15));
    l10.setBounds(100,550,150,20);

    l11= new JLabel("Department: ");
    l11.setForeground(Color.white);
    l11.setFont(new Font("Serif", Font.BOLD, 15));
    l11.setBounds(600,100,150,20);

    l12= new JLabel("Series: ");
    l12.setForeground(Color.white);
    l12.setFont(new Font("Serif", Font.BOLD, 15));
    l12.setBounds(600,150,150,20);

    l13= new JLabel("Roll Number: ");
    l13.setForeground(Color.white);
    l13.setFont(new Font("Serif", Font.BOLD, 15));
    l13.setBounds(600,200,150,20);

    l14= new JLabel("CGPA: ");
    l14.setForeground(Color.white);
    l14.setFont(new Font("Serif", Font.BOLD, 15));
    l14.setBounds(600,250,150,20);

    l15= new JLabel("Room Number: ");
    l15.setForeground(Color.white);
    l15.setFont(new Font("Serif", Font.BOLD, 15));
    l15.setBounds(600,300,150,20);





    tf1= new JTextField();
    tf1.setBounds(300,100,200,20);

    tf2= new JTextField();
    tf2.setBounds(300,150,200,20);

    tf3= new JTextField();
    tf3.setBounds(300,200,200,20);

    tf4= new JTextField();
    tf4.setBounds(300,250,200,20);

    tf5= new JTextField();
    tf5.setBounds(300,300,200,20);

    tf6= new JTextField();
    tf6.setBounds(300,350,200,20);

    tf7= new JTextField();
    tf7.setBounds(300,400,200,20);

    tf8= new JTextField();
    tf8.setBounds(300,450,200,20);

    tf9= new JTextField();
    tf9.setBounds(300,500,200,20);

    tf10= new JTextField();
    tf10.setBounds(300,550,200,20);

    tf11= new JTextField();
    tf11.setBounds(710,100,200,20);

    tf12= new JTextField();
    tf12.setBounds(710,150,200,20);

    tf13= new JTextField();
    tf13.setBounds(710,200,200,20);

    tf14= new JTextField();
    tf14.setBounds(710,250,200,20);

    tf15= new JTextField();
    tf15.setBounds(710,300,200,20);



    tf1.setEditable(false);
    tf2.setEditable(false);
    tf3.setEditable(false);

    tf4.setEditable(false);
    tf5.setEditable(false);
    tf6.setEditable(false);

    tf7.setEditable(false);
    tf8.setEditable(false);
    tf9.setEditable(false);

    tf10.setEditable(false);
    tf11.setEditable(false);
    tf12.setEditable(false);

    tf13.setEditable(false);
    tf14.setEditable(false);
    tf15.setEditable(false);






    try {  

        Class.forName("com.mysql.jdbc.Driver");  

        Connection con=DriverManager.getConnection(  
        "jdbc:mysql://localhost:3306/hostel_management","root","");  

        //here project is database name, root is username and password is empty 

        Statement stmt=con.createStatement();  

        ResultSet rs=stmt.executeQuery("select * from student_info where roll_no = '" + textfield.getText() + "'");  

        //if(rs.next()=null)
            //JOptionPane.showMessageDialog(null, "No Available Seat. Please Select Another Room.", "Warning", JOptionPane.ERROR_MESSAGE);
        int count= 0;










        while(rs.next())  
        {

             count++;


             tf1.setText(rs.getString(1));
             tf1.setHorizontalAlignment(JTextField.CENTER);

             tf2.setText(rs.getString(2));
             tf2.setHorizontalAlignment(JTextField.CENTER);

             tf3.setText(rs.getString(3));
             tf3.setHorizontalAlignment(JTextField.CENTER);

             tf4.setText(rs.getString(4));
             tf4.setHorizontalAlignment(JTextField.CENTER);

             tf5.setText(rs.getString(5));
             tf5.setHorizontalAlignment(JTextField.CENTER);

             tf6.setText(rs.getString(6));
             tf6.setHorizontalAlignment(JTextField.CENTER);

             tf7.setText(rs.getString(7));
             tf7.setHorizontalAlignment(JTextField.CENTER);

             tf8.setText(rs.getString(8));
             tf8.setHorizontalAlignment(JTextField.CENTER);

             tf9.setText(rs.getString(9));
             tf9.setHorizontalAlignment(JTextField.CENTER);

             tf10.setText(rs.getString(10));
             tf10.setHorizontalAlignment(JTextField.CENTER);

             tf11.setText(rs.getString(11));
             tf11.setHorizontalAlignment(JTextField.CENTER);

             tf12.setText(rs.getString(12));
             tf12.setHorizontalAlignment(JTextField.CENTER);

             tf13.setText(rs.getString(13));
             tf13.setHorizontalAlignment(JTextField.CENTER);

             tf14.setText(rs.getString(14));
             tf14.setHorizontalAlignment(JTextField.CENTER);

             tf15.setText(rs.getString(15));
             tf15.setHorizontalAlignment(JTextField.CENTER);



             Blob blob = rs.getBlob(16);
             int blobLength = (int) blob.length();  

             byte[] bytes = blob.getBytes(1, blobLength);
            //blob.free();
             BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));


             ImageIcon icon = new ImageIcon(bytes); // you can read straight from byte array
             l16 = new JLabel(icon);
             l16.setBounds(620, 350, 250, 250);
             add(l16);



             //add(frame_imagelabel);
              add(l1);
              add(tf1);
              add(l2);
              add(tf2);
              add(l3);
              add(tf3);
              add(l4);
              add(tf4);
              add(l5);
              add(tf5);
              add(l6);
              add(tf6);
              add(l7);
              add(tf7);
              add(l8);
              add(tf8);
              add(l9);
              add(tf9);
              add(l10);
              add(tf10);
              add(l11);
              add(tf11);
              add(l12);
              add(tf12);
              add(l13);
              add(tf13);
              add(l14);
              add(tf14);
              add(l15);
              add(tf15);



              add(frame_imagelabel);
              pack();
              setSize(1000,700);


        }


        //if(im!=null)
        //JOptionPane.showMessageDialog(null, "No image", "Warning", JOptionPane.ERROR_MESSAGE);


        if(count==0)
            JOptionPane.showMessageDialog(null, "This Student is not a member of this hall.", "Warning", JOptionPane.ERROR_MESSAGE);


        con.close();  

        } catch(Exception ex){ JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE); }  


    }

After clicking a button you add many 15 JLabel and JTextFields :

    f(e.getSource()==button)
        {

        l1= new JLabel("Name: ");
        l1.setForeground(Color.white);
        l1.setFont(new Font("Serif", Font.BOLD, 15));
        l1.setBounds(100,100,150,20);
        //l1.setLabelFor(tf1);

        .....
        .....
        .....

        l15= new JLabel("Room Number: ");
        l15.setForeground(Color.white);
        l15.setFont(new Font("Serif", Font.BOLD, 15));
        l15.setBounds(600,300,150,20);

        tf1= new JTextField();
        tf1.setBounds(300,100,200,20);
        .....
        .....
        .....
        tf15= new JTextField();
        tf15.setBounds(300,100,200,20);
   }

Then you add those JLabel and JTextField to your Frame .

And you are doing those steps every time when the button is pressed.

Now, for first time you enter an roll number and press button to see some that student info, The code add some JLabel and JTextField to the Frame .

When you trying to see 2nd time, this code again add some JLabel and JTextField without removing your other JLabel and JTextField which was added in first time. Then in 2nd time, created JLabel and JTextFields are added below to the Frame of thus you are unable to see it because it is out of the Frame size.

So you need to remove all the JLabel and JTextField which you have created first time.

so you should remove all components ( JLabel and JTextField ) before adding it:

If you extends JFrame in your class: try this

if(l1!=null){
remove(l1);
}
...
...
...

if(l15!=null){
remove(l15);
}

if(tf1!=null){
remove(tf1);
}
...
...
...

if(tf15!=null){
remove(tf15);
}

BUT THIS IS NOT BETTER SOLUTION TO DO THIS LOGIC

It will be better if you initialize all the JLabel and JTextField in your Constructor .

And when click the button just set text to them.

l1.setText(your_value_from_db);//l1 is JLabel type variable

tf.setText(your_value_from_db);//tf is JTextField type variable

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM