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
andJTextField
in yourConstructor
.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.