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);
}
}
});