JFileChooser - Java (241629)
Формулировка задачи:
Посмотрел много примеров использования этого компонента.
Везде примерно так:
Но строка int ret = fileopen.showDialog(null, "Открыть файл"); создает новое окно (с этим не разобрался).
А мне нужно закрыть окно при выборе файла.
День бьюсь, не могу найти простого объяснения обработки нажатия кнопок в окне JFileChooser.
При том что после выбора файла и соотсветственно закрытия окна JFileChooser, в другом окне неоходимо активировать кнопку Ок. Запутался совсем. В каком месте добавлять обработчика событий... уф. Подскажите.
JFileChooser fileopen = new JFileChooser(); int ret = fileopen.showDialog(null, "Открыть файл"); if (ret == JFileChooser.APPROVE_OPTION) { File file = fileopen.getSelectedFile(); /* * Какие-то действия. */ }
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); } } });
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д