使用JFileChooser将图像放置在标签上

问题描述 投票:0回答:1

下面的我的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();
   }}
java swing jpanel jlabel jfilechooser
1个回答
0
投票

为此您需要在按钮上使用FileChooserlabel按钮,它将调用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();
    }
   }
© www.soinside.com 2019 - 2024. All rights reserved.