将图像保存到数据库时遇到大问题。
我有一个名为JLabel
的personImage
,当用户要插入图像时,他必须单击personImage
,然后出现一个JFileChooser
,用户可以选择图像。所选图像将被加载到personImage
中。
当用户选择图像并保存图像时,它可以正常工作,但是当用户不选择图像并要保存细节时,它会给出一个NullPointerException
。我认为这是因为没有将图像获取到文件对象的路径。我怎么知道JLabel
中是否有图像?我想检查是否有图像。
try {
String fname = txt_Fname.getText();
String lname = txt_Lname.getText();
String mobile = txt_mobile.getText();
String home = txt_home.getText();
String work = txt_work.getText();
String fax = txt_fax.getText();
byte[] image_detail;
PersonDAO perDAO = new PersonDAO(); //create person object
if (status == 1) // used status for check whether Jlabed is clicked
{
File image = new File(path);
FileInputStream fis = new FileInputStream(image);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for (int readNum; (readNum = fis.read(buf)) != -1; )
{
baos.write(buf, 0,readNum);
}
image_detail = baos.toByteArray();
Person person1 = new Person(fname, lname, mobile, home, work, fax, image_detail); // call the person
// constructer when there is an image. I did validate with status variable
perDAO.InsertPerson(person1); // call the personDAO to insert the Person to database
}
else
{
Person person2 = new Person(lname, lname, mobile, home, work, fax); // if there is not an image call this constructer .
perDAO.InsertPerson(person2); // then call to personDAO object to insert the person to databasee
}
}
catch (Exception exc)
{
System.out.println(exc + "sssssss");
}
// >>> when click on the JLabel, the JFileChooser appears
int i = jFileChooser2.showOpenDialog(this);
try {
f = jFileChooser2.getSelectedFile();
path = f.getAbsolutePath();
ImageIcon image = new ImageIcon(path);
status = 1;
personImage.setIcon(image);
}
catch (Exception exc)
{
System.out.println(exc);
}
最佳答案
如果您有JLabel label
,请执行以下操作以检查它是否具有图标:
if (label.getIcon() == null) {
// this means there is no icon
}
关于java - 检查Jlabel是否具有图标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13288675/