JFileChooser - Java (241629)

Узнай цену своей работы

Формулировка задачи:

Посмотрел много примеров использования этого компонента. Везде примерно так:
JFileChooser fileopen = new JFileChooser();
int ret = fileopen.showDialog(null, "Открыть файл");                
if (ret == JFileChooser.APPROVE_OPTION) {
    File file = fileopen.getSelectedFile();
    /*
     * Какие-то действия.
     */
}
Но строка int ret = fileopen.showDialog(null, "Открыть файл"); создает новое окно (с этим не разобрался). А мне нужно закрыть окно при выборе файла. День бьюсь, не могу найти простого объяснения обработки нажатия кнопок в окне JFileChooser. При том что после выбора файла и соотсветственно закрытия окна JFileChooser, в другом окне неоходимо активировать кнопку Ок. Запутался совсем. В каком месте добавлять обработчика событий... уф. Подскажите.
package lab14;
 
import java.awt.EventQueue;
 
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
 
import javax.swing.JTextField;
 
import lab13.Formula;
 
public class Okno extends JFrame {
 
    private JPanel contentPane;
    private JTextField textField;
 
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // чтобы контролы Swing отображались в стиле ОС
                    Okno frame = new Okno();
                    frame.setLocationRelativeTo(null); // чтобы JFrame отображался по центру экрана
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Okno() {
        setTitle("Лабораторная работа 14 by GooDi"); //создание основного контейнера JFrame
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        
        contentPane = new JPanel();   // Создание панели для размещения кнопок и других элементов
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        JButton btnSelectFile = new JButton("Select File");  //создание кнопки выбора файла
        btnSelectFile.setBounds(12, 64, 420, 35);
        contentPane.add(btnSelectFile);
        btnSelectFile.addActionListener(new ActionListener() {  //обработка нажатия кнопки "выбор файла"
            public void actionPerformed(ActionEvent e) {
                OknoSelectFile oknoSelectFile = new OknoSelectFile();
                oknoSelectFile.setVisible(true);
                //textField.setText(oknoSelectFile.getPath());
            //  System.out.print(oknoSelectFile.getPath());

            }
        });
        
        JButton btnOk = new JButton("Ok");  //создание кнопки Ок
        btnOk.setEnabled(false);
        btnOk.addActionListener(new ActionListener() {   //обработка нажатия кнопкт Ок
            public void actionPerformed(ActionEvent e) {
                String path = file.getAbsolutePath();
                if (path.equals("C:\\Java\\workspace\\lab13\\text\\in.txt")){
                    Formula f = new Formula();
                    f.metod();
                } else {
                    System.out.println("Выбран не тот файл. Запустите приложение снова");
                    System.exit(0);
                }
            }
        });
        btnOk.setBounds(130, 144, 145, 35);
        contentPane.add(btnOk);
        int ok = 0;
        if (ok == JFileChooser.FILES_AND_DIRECTORIES){
            btnOk.setEnabled(true);
        }
        
        JButton btnCancel = new JButton("Cancel");  //создание кнопки Отмена
        btnCancel.addActionListener(new ActionListener() {  //обработка нажатия кнопки Отмена
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        btnCancel.setBounds(287, 144, 145, 35);
        contentPane.add(btnCancel);
        
        textField = new JTextField();  //создание текстового поля
        textField.setBounds(12, 13, 420, 38);
        textField.setColumns(10);
        contentPane.add(textField);
        
    }
}
package lab14;
 
import java.io.File;
 
import javax.swing.JFileChooser;
import javax.swing.JFrame;
 
import lab13.Formula;
 
public class OknoSelectFile extends JFrame{
    
    private JFileChooser chooser;
    
    public OknoSelectFile() {
        setBounds(0, 0, 751, 397);
        setLocationRelativeTo(null);
        setTitle("\u0412\u044B\u0431\u043E\u0440 \u0444\u0430\u0439\u043B\u0430");
        getContentPane().setLayout(null);
        
        JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Выбор файла");
        int result = chooser.showOpenDialog(this);
        if (result == JFileChooser.CANCEL_OPTION) return;
        File file = chooser.getSelectedFile();
            
        String path = file.getAbsolutePath();
        if (path.equals("C:\\Java\\workspace\\lab13\\text\\in.txt")){
            Formula f = new Formula();
            f.metod();
        } else {
            System.out.println("Выбран не тот файл. Запустите приложение снова");
            System.exit(0);
        }
        //textField.setText(chooser.getSelectedFile().getName());
        
        System.out.print(file);
        System.out.print(result);
        System.out.print(file.getAbsolutePath());

    }
    
    public String getPath(){
        return chooser.getSelectedFile().getName();
    }
}

Решение задачи: «JFileChooser»

textual
Листинг программы
 btnSelectFile.addActionListener(new ActionListener() {  //обработка нажатия кнопки "выбор файла"
            public void actionPerformed(ActionEvent e) {
                JFileChooser chooser = new JFileChooser();
                chooser.setDialogTitle("Выбор файла");
                int result = chooser.showOpenDialog(Okno.this);
                if (result == JFileChooser.APPROVE_OPTION){
                    file = chooser.getSelectedFile();
                    btnOk.setEnabled(true);
                }
            }
        });

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5