编写一个界面,包括1个按钮和1个JLabel控件,当点击按钮时,将从D盘读取图片cat.jpg,显示在JLabel控件中。
要求:对图片不存在,读取失败等情况做处理
只能写出来显示文字,不知道咋显示图片
package lecture25_2;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
class FrameDemo extends JFrame implements ActionListener {
JLabel label1;
JButton btn1;
public FrameDemo(String title) {
super(title);
btn1 = new JButton("显示图片");
label1 = new JLabel();
add(label1);
add(btn1);
btn1.addActionListener(this);
setLayout(new FlowLayout());
setSize(400, 200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
label1.setText("1234");
}
// TODO Auto-generated method stub
}
}
public class Test {
public static void main(String[] args) {
try {
FileInputStream in = new FileInputStream("F:\\test.jpg");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FrameDemo frame = new FrameDemo("显示图片");
}
}
这是一份使用 Java 实现此需求的代码:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImageDisplay {
private JFrame frame;
private JLabel label;
public ImageDisplay() {
frame = new JFrame("图片显示");
label = new JLabel();
JButton button = new JButton("读取图片");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
File file = new File("D:/cat.jpg");
if (!file.exists()) {
label.setText("文件不存在");
} else {
try {
ImageIcon icon = new ImageIcon(ImageIO.read(file));
label.setIcon(icon);
} catch (IOException e1) {
label.setText("读取失败");
}
}
}
});
frame.add(button, BorderLayout.NORTH);
frame.add(label, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
public static void main(String[] args) {
new ImageDisplay();
}
}
```
说明:
使用 ImageIO.read 方法读取图片。
使用 ImageIcon 将图片包装为一个图标,以便于在 JLabel 中显示。
在读取图片前检查文件是否存在,若不存在,则显示“文件不存在”。
若读取图片过程中发生异常,则显示“读取失败”。