下面的我的Java代码具有一个按钮,当选择该按钮时,将出现一个带有文件选择器的对话框。我要做的就是从文件选择器中选择一个图像,并将其放置在此代码中声明为labelForImage的标签上。我不知道fileChooser是否是正确的方法,但这是我的最佳猜测。
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JFileChooser;
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner;
public class Listener extends JFrame implements ActionListener{
public Listener(){
JPanel Panel1 = new JPanel();
Panel1.setLayout(new BorderLayout());
JPanel Panel2 = new JPanel();
Panel2.setLayout(new GridLayout(2,1));
JLabel labelForImage = new JLabel();
JButton myButton2 = new JButton("2:Open File");
Panel2.add(labelForImage);
myButton2.addActionListener(this);
Panel2.add(myButton2);
Panel1.add(Panel2,BorderLayout.CENTER);
add(Panel1);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(320, 240);
setVisible(true);
}
public void actionPerformed(ActionEvent run) {
File file;
Scanner fileIn;
int response;
JFileChooser chooser = new JFileChooser(".");
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
response = chooser.showOpenDialog(null);
if(response == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
try {
fileIn = new Scanner(file);
if(file.isFile()) {
while(fileIn.hasNextLine()) {
String line = fileIn.nextLine();
System.out.println(line);
}
}
else {
System.out.println("no File");
}
fileIn.close();
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new Listener();
}}
为此您需要在按钮上使用FileChooser
和label
和按钮,它将调用FileChooser
,并且必须在button
内放置在label
上显示图像的一些逻辑。
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Work extends JFrame{
JButton button ; // create JButton object
JLabel label; // create JLabel object
public Work(){
super("Set Picture Into A JLabel Using JFileChooser In Java");
// set button label
button = new JButton("Browse");
// set position of button
button.setBounds(300,300,100,40);
label = new JLabel();
// set label position
label.setBounds(10,10,670,250);
add(button);
add(label);
// button click event
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// creating JFileChooser Object
JFileChooser file = new JFileChooser();
file.setCurrentDirectory(new File(System.getProperty("user.home")));
//filter the files
FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpg","gif","png");
// set the image on file object
file.addChoosableFileFilter(filter);
int result = file.showSaveDialog(null);
//if the user click on save in Jfilechooser
if(result == JFileChooser.APPROVE_OPTION){
File selectedFile = file.getSelectedFile();
String path = selectedFile.getAbsolutePath();
label.setIcon(ResizeImage(path));
}
//if the user click on save in Jfilechooser
else if(result == JFileChooser.CANCEL_OPTION){
System.out.println("No File Select");
}
}
});
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(700,400); // set the panel size
setVisible(true);
}
// Methode to resize imageIcon with the same size of a Jlabel
public ImageIcon ResizeImage(String ImagePath)
{
ImageIcon MyImage = new ImageIcon(ImagePath);
Image img = MyImage.getImage();
Image newImg = img.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);
ImageIcon image = new ImageIcon(newImg);
return image;
}
public static void main(String[] args){
new Work();
}
}