Java 如何将imagepath存储在数据库中并设置为按钮
我有一个GUI,它有文本字段和按钮。如果单击“下一步”按钮,光标应在数据库中导航,并将行值设置到我的文本字段中,并将路径放入“创建图像”按钮图标中。但它给了我这个错误 代码块:Java 如何将imagepath存储在数据库中并设置为按钮,java,database,swing,imageicon,Java,Database,Swing,Imageicon,我有一个GUI,它有文本字段和按钮。如果单击“下一步”按钮,光标应在数据库中导航,并将行值设置到我的文本字段中,并将路径放入“创建图像”按钮图标中。但它给了我这个错误 代码块: if (event.getSource() == next) { try { if (rs.next()) { lastnameT.setText(rs.getString("lname")); firstnameT.setText(r
if (event.getSource() == next) {
try {
if (rs.next()) {
lastnameT.setText(rs.getString("lname"));
firstnameT.setText(rs.getString("fname"));
middlenameT.setText(rs.getString("mname"));
aliasT.setText(rs.getString("alias"));
sexT.setSelectedItem(rs.getString("sex"));
ageT.setText(rs.getString("age"));
civilstatusT.setSelectedItem(rs.getString("civilstatus"));
addressT.setText(rs.getString("address"));
religionT.setSelectedItem(rs.getString("religion"));
monthT.setSelectedItem(rs.getString("m"));
dayT.setSelectedItem(rs.getString("d"));
yearT.setSelectedItem(rs.getString("y"));
eaT.setSelectedItem(rs.getString("EA"));
weightT.setText(rs.getString("weight"));;
heightT.setText(rs.getString("height"));
hairT.setSelectedItem(rs.getString("hair"));
hairColorT.setSelectedItem(rs.getString("haircolor"));
colorEyesT.setSelectedItem(rs.getString("colorofeyes"));
complexionT.setSelectedItem(rs.getString("complexion"));
gangT.setText(rs.getString("gang"));
marksT.setText(rs.getString("marks"));
preparedbyT.setText(rs.getString("preparedBy"));
verifiedT.setText(rs.getString("verifiedBy"));
//btnNewButton.putClientProperty(rs.getString("image"),rs.getString("image"));
btnNewButton.setIcon(new ImageIcon(rs.getString("image")));
// save.setIcon(new ImageIcon(file.getPath()));
}
else {
JOptionPane.showMessageDialog(null, "No more records");
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Sa catch bumagsak");
System.out.print(e);
}
}
Uncaught error fetching image:
java.lang.NullPointerException
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.awt.image.FileImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
错误:
if (event.getSource() == next) {
try {
if (rs.next()) {
lastnameT.setText(rs.getString("lname"));
firstnameT.setText(rs.getString("fname"));
middlenameT.setText(rs.getString("mname"));
aliasT.setText(rs.getString("alias"));
sexT.setSelectedItem(rs.getString("sex"));
ageT.setText(rs.getString("age"));
civilstatusT.setSelectedItem(rs.getString("civilstatus"));
addressT.setText(rs.getString("address"));
religionT.setSelectedItem(rs.getString("religion"));
monthT.setSelectedItem(rs.getString("m"));
dayT.setSelectedItem(rs.getString("d"));
yearT.setSelectedItem(rs.getString("y"));
eaT.setSelectedItem(rs.getString("EA"));
weightT.setText(rs.getString("weight"));;
heightT.setText(rs.getString("height"));
hairT.setSelectedItem(rs.getString("hair"));
hairColorT.setSelectedItem(rs.getString("haircolor"));
colorEyesT.setSelectedItem(rs.getString("colorofeyes"));
complexionT.setSelectedItem(rs.getString("complexion"));
gangT.setText(rs.getString("gang"));
marksT.setText(rs.getString("marks"));
preparedbyT.setText(rs.getString("preparedBy"));
verifiedT.setText(rs.getString("verifiedBy"));
//btnNewButton.putClientProperty(rs.getString("image"),rs.getString("image"));
btnNewButton.setIcon(new ImageIcon(rs.getString("image")));
// save.setIcon(new ImageIcon(file.getPath()));
}
else {
JOptionPane.showMessageDialog(null, "No more records");
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Sa catch bumagsak");
System.out.print(e);
}
}
Uncaught error fetching image:
java.lang.NullPointerException
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.awt.image.FileImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
获取图像时出现未捕获错误:
java.lang.NullPointerException
位于java.io.FileInputStream。(未知源)
位于java.io.FileInputStream。(未知源)
位于sun.awt.image.FileImageSource.getDecoder(未知源)
在sun.awt.image.InputStreamImageSource.doFetch(未知源)处
位于sun.awt.image.ImageFetcher.fetchloop(未知源)
位于sun.awt.image.ImageFetcher.run(未知源)
似乎
rs.getString(“image”)
正在返回文件的无效路径。您可以轻松地检查以下内容:
//btnNewButton.setIcon(new ImageIcon(rs.getString("image")));
System.out.println(rs.getString("image"));
一些提示
数据库调用是耗时的任务,可能会阻塞(又称EDT),导致GUI无响应。EDT是一个单独的特殊线程,Swing组件在其中创建和更新。为了避免阻塞,该线程考虑使用A在后台线程中执行数据库调用,并更新EDT中的Swing组件。更多信息请参阅
我建议你看看书中的提示。总结:
- 在域类中包装数据
- 使用SwingWorker在后台线程中执行数据库调用,并在EDT中更新Swing组件