在我的java项目中,我希望通过输入卷号来查看每个学生的信息。在第一次,我输入卷号,结果来了。但如果我想在同一个窗口看到其他学生的掷骰数,结果就没有了。我的代码中有什么问题?屏幕截图如下:当我更改卷号时,图像和其他信息不会更新。
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); }
}
答案 0 :(得分:0)
点击按钮后,您可以添加多个JLabel
和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);
}
然后您将JLabel
和JTextField
添加到Frame
。
每次按下按钮时,您都在执行这些步骤。
现在,您第一次输入滚动号码并按下按钮以查看该学生信息,该代码会向JLabel
添加一些JTextField
和Frame
。
当您尝试查看第二次时,此代码会再次添加一些JLabel和JTextField
,而不会删除第一次添加的其他JLabel
和JTextField
。然后在第二次,创建JLabel
和JTextFields
将添加到框架下方,因此您无法看到它,因为它超出了框架大小。
因此,您需要删除第一次创建的所有JLabel
和JTextField
。
因此您应该在添加之前删除所有组件(JLabel
和JTextField
):
如果您在班级中延伸JFrame
:请尝试此
if(l1!=null){
remove(l1);
}
...
...
...
if(l15!=null){
remove(l15);
}
if(tf1!=null){
remove(tf1);
}
...
...
...
if(tf15!=null){
remove(tf15);
}
但这不是更好的解决方案吗
如果您初始化
JLabel
中的所有JTextField
和Constructor
,那就更好了。单击按钮时,只需将文本设置为它们。
l1.setText(your_value_from_db);//l1 is JLabel type variable
tf.setText(your_value_from_db);//tf is JTextField type variable