Java netbeans диалоговое окно

Сохраните файл/открыть файл диалоговое окно, используя Swing & Netbeans GUI editor

Я начинаю с Java. Я делаю простой текстовый редактор в netbeans 7 (.3) IDE, используя его графический редактор. Основная проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить ее сохранять/открывать файл. Я создал кнопку «Сохранить». Когда я отбрасываю выбор файла, он появляется как обычное диалоговое окно открытого файла, встроенное в окно java, без каких-либо функций. Я также попытался создать новый jFileChooser, когда нажата кнопка сохранения (в представлении «Источник» ), но она не работает.

Вкратце, мне нужно простое диалоговое окно open/save. Когда нажимается кнопка «Сохранить», открывается диалоговое окно сохранения и сохраняет файл везде, где пользователь выбирает любое имя и расширение .rtf или .txt. (P.S.: можно ли сохранить файл в .docx или .doc в Java?)
Когда нажимается «Open» btn, он открывает файл в .rtf или .txt(опять же, можно открыть .docx или .doc в Java?) Через выбор файла.

 private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) < JFileChooser saveFile = new JFileChooser(); if saveFile.showSaveDialog(modalToComponent) == JFileChooser.APPROVE_OPTION < File xyz = saveFile.getSelectedFile(); >> 

ОТВЕТЫ

Ответ 1

Я создал образец интерфейса, который показывает диалог сохранения и открытия файла. Нажмите кнопку «Сохранить», чтобы открыть диалоговое окно сохранения, и нажмите кнопку «Открыть», чтобы открыть диалоговое окно файла.

import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; public class FileChooserEx < public static void main(String[] args) < Runnable r = new Runnable() < @Override public void run() < new FileChooserEx().createUI(); >>; EventQueue.invokeLater(r); > private void createUI() < JFrame frame = new JFrame(); frame.setLayout(new BorderLayout()); JButton saveBtn = new JButton("Save"); JButton openBtn = new JButton("Open"); saveBtn.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent arg0) < JFileChooser saveFile = new JFileChooser(); saveFile.showSaveDialog(null); >>); openBtn.addActionListener(new ActionListener() < @Override public void actionPerformed(ActionEvent arg0) < JFileChooser openFile = new JFileChooser(); openFile.showOpenDialog(null); >>); frame.add(new JLabel("File Chooser"), BorderLayout.NORTH); frame.add(saveBtn, BorderLayout.CENTER); frame.add(openBtn, BorderLayout.SOUTH); frame.setTitle("File Chooser"); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); > > 

Ответ 2

Я думаю, вы сталкиваетесь с тремя проблемами:

  • понимание FileChooser
  • записи/чтения файлов
  • понимание расширений и форматов файлов
Читайте также:  Java logging api exception

ad 1. Вы уверены, что подключили FileChooser к правильной панели/контейнеру? Я бы пошел на простой учебник по этому вопросу и посмотрел, работает ли он. Это лучший способ учиться — делая небольшие, но достаточно большие шаги вперед. Нарушение проблемы в таких частях иногда может быть сложным;)

объявления. 2. После сохранения или открытия файла у вас должны быть методы для записи или чтения файла. И снова есть довольно аккуратные примеры по этому вопросу, и это легко понять тему.

объявления. 3. Существует разница между файлом, имеющим расширение и формат файла. Вы можете изменить формат любого файла на все, что захотите, но это не повлияет на его содержимое. Он может просто сделать файл нечитаемым для приложения, связанного с таким расширением. Файлы TXT просты — вы читаете, что пишете. XLS, DOCX и т.д. Требуют больше работы, и обычно это лучший способ справиться с ними.

Ответ 3

В-третьих, что именно вы ожидаете, что диалог сохранения работает, он работает так, Открытие документа doc очень возможно — http://srikanthtechnologies.com/blog/openworddoc.html

Ответ 4

private void doOpenFile() < int result = myFileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) < Path path = myFileChooser.getSelectedFile().toPath(); try < String contentString = ""; for (String s : Files.readAllLines(path, StandardCharsets.UTF_8)) < contentString += s; >jText.setText(contentString); > catch (IOException e) < // TODO Auto-generated catch block e.printStackTrace(); >> > private void doSaveFile() < int result = myFileChooser.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) < // We'll be making a mytmp.txt file, write in there, then move it to // the selected // file. This takes care of clearing that file, should there be // content in it. File targetFile = myFileChooser.getSelectedFile(); try < if (!targetFile.exists()) < targetFile.createNewFile(); >FileWriter fw = new FileWriter(targetFile); fw.write(jText.getText()); fw.close(); > catch (IOException e) < e.printStackTrace(); >> > 

Источник

Добавление выбора файлов к приложению Java

В этом учебном курсе вы узнаете, как добавлять выбор файлов к приложению Java с помощью компонента javax.swing.JFileChooser . Код можно написать вручную, но использование редактора GUI Builder среды NetBeans существенно снижает объём работы. В рамках этого упражнения вы создадите небольшое приложение Java, загружающее файл .txt в текстовую область.

netbeans stamp 80 74 73

Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.

Версия 7.0 или более поздняя

Создание приложения

Прежде всего необходимо создать приложение Java:

  1. Выберите в главном меню «Файл > Новый проект». Выберите категорию «Java» и тип проекта «Приложение Java». Нажмите кнопку «Далее».
  2. В качестве имени проекта введите JFileChooserDemo , затем укажите местоположение проекта.
  3. Снимите флажок «Создать главный класс».

newproj small

Создание формы приложения

В этом разделе вы создадите контейнер JFrame и добавите к нему несколько компонентов.

Создание формы JFrame:

  1. Щелкните правой кнопкой мыши узел «Исходные файлы» и выберите пункт «Создать > Другое». Выберите категорию «Формы Swing GUI» и тип файла «JFrameForm». Нажмите кнопку «Далее».
  2. В поле «Имя класса» введите JFileChooserDemo .
  3. В поле «Пакет» введите jfilechooserdemo.resources .

newjframeform small

  1. Нажмите кнопку «Завершить».
  2. В окне «Свойства» введите Demo application в качестве свойства «Заголовок» и нажмите ENTER для подтверждения.

Чтобы добавить компоненты к форме JFrame, выполните следующие действия.

  1. В окне «Палитра» откройте категорию «Меню Swing», выберите компонент «Строка меню» и перетащите его в левый верхний угол JFrame.

Примечание. Если палитра не отображается, выберите ‘Окно > Палитра’ в главном меню.

menubaradded small

  1. Правой кнопкой мыши щелкните элемент «Правка» компонента «Строка меню» и выберите в контекстном меню пункт «Удалить».
  2. Чтобы добавить пункт меню, позволяющий открывать компонент FileChooser из выполняемого приложения, в категории «Меню Swing» в окне «Палитра» выберите новый пункт меню (JMenuItem1), перетащите его в элемент «Строка меню» и поместите его в поле «Файл» элемента «Строка меню».

menuitemadded small

*Примечание. * Убедитесь, что панель меню выбрана до перетаскивания другого элемента меню в него, чтобы добавить этот другой элемент на панель меню.

  1. Правой кнопкой мыши щелкните элемент jMenuItem1 в режиме конструирования и выберите ‘Изменить имя переменной’ в контекстном меню. Измените имя элемента на Open и нажмите кнопку «ОК».
  2. Убедитесь, что элемент jMenuItem1 все еще выбран в режиме проектирования. Нажмите клавишу ПРОБЕЛ, чтобы изменить текст компонента. Измените текст на Open и нажмите ENTER для подтверждения.
  3. Укажите обработчик действий для пункта меню «Open». Правой кнопкой мыши щелкните пункт меню и выберите в контекстном меню «События >Действие > Выполненное действие». GUI Builder автоматически переключается в режим просмотра исходного кода, и создается новый метод обработчика событий с именем OpenActionPerformed() . Окно навигатора должно выглядеть следующим образом:

openactionperformednavigator

  1. Чтобы добавить пункт меню для выхода элемента FileChooser из создаваемого приложения, вернитесь в режим проектирования, в категории «Меню Swing» в окне «Палитра» выберите пункт меню JMenuItem1 и перетащите его в элемент «Строка меню» под пункт меню «Open». Место вставки элемента JMenuItem1 выделено оранжевым цветом.

highlighting small

  1. Щелкните правой кнопкой мыши элемент jMenuItem1 в режиме конструирования и выберите ‘Изменить имя переменной’ в контекстном меню. Измените имя элемента на Exit и нажмите кнопку «ОК».
  2. Убедитесь, что элемент jMenuItem1 все еще выбран в режиме конструирования. Нажмите клавишу ПРОБЕЛ, чтобы изменить текст компонента. Измените текст на Exit и нажмите ENTER для подтверждения.
  3. Укажите обработчик действий для пункта меню «Exit». Правой кнопкой мыши щелкните пункт меню и выберите в контекстном меню «События >Действие > Выполненное действие». GUI Builder автоматически переключается в режим просмотра исходного кода, и создается новый метод обработчика событий с именем ExitActionPerformed() . В окне навигатора, под узлом OpenActionPerformed() отображается узел ExitActionPerformed .
  4. Чтобы сделать пункт меню «Exit» рабочим, в тело метода ExitActionPerformed() необходимо включить следующий исходный код:
  1. Переключитесь обратно в режим проектирования. Перетащите текстовую область ( JTextArea ) из категории ‘Элементы управления Swing’ палитры на форму, как показано на иллюстрации.

textareadded small

  1. Измените размер компонента, чтобы оставить место для текста, который отобразится в выборе файлов позже. Измените имя переменной на textarea . Форма должна иметь следующий вид:

jfilechooserdemoview final small

Основным упражнением данного учебного курса была настройка простого приложения Java. Сейчас следует добавить фактический выбор файлов.

Добавление выбора файлов

  1. Выберите Окно > Навигация > Навигатор, чтобы открыть окно ‘Навигатор'(если оно еще не открыто).
  2. В навигаторе щелкните правой кнопкой мыши узел Другие компоненты . Выберите в контекстном меню пункт «Добавить из палитры > Диалоговые окна Swing > Выбор файлов

Помимо использования контекстного меню Добавить из палитры можно также перетащить компонент JFileChooser из категории ‘Окно Swing’ палитры на белое поле конструктора графического интерфейса. Вы получите тот же результат, но данный метод требует немного больше усилий, так как эскиз JFileChooser занимает достаточно большую область экрана и можно случайно вставить окно в одну из панелей, что не соответствует поставленной задаче.

  1. Навигатор показывает, что элемент JFileChooser добавлен в форму.
  2. Щелкните узел JFileChooser правой кнопкой мыши и измените имя переменной на fileChooser .

navigator jframe

Вы добавили выбор файлов. Далее следует настроить выбор файлов для отображения необходимого заголовка, добавить пользовательский фильтр файлов и интегрировать выбор файлов в приложение.

Настройка выбора файлов

Реализация действия «Открыть»

  1. Выберите элемент JFileChooser в окне ‘Навигатор’, затем измените его свойства в диалоговом окне ‘Свойства’ Измените свойство dialogTitle на Мой открытый диалог , затем нажмите Enter и закройте диалоговое окно ‘Свойства’
  2. Нажмите кнопку «Перейти к исходному тексту» в GUI Builder, чтобы вернуться к режиму просмотра исходного кода. Чтобы интегрировать выбор файлов в приложение, необходимо вставить в существующий метод OpenActionPerformed() следующий фрагмент кода.
private void OpenActionPerformed(java.awt.event.ActionEvent evt) < int returnVal = fileChooser.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) < File file = fileChooser.getSelectedFile(); try < // What to do with the file, e.g. display it in a TextArea textarea.read( new FileReader( file.getAbsolutePath() ), null ); >catch (IOException ex) < System.out.println("problem accessing file"+file.getAbsolutePath()); >> else < System.out.println("File access cancelled by user."); >>

*Примечание. * Удалите первую и последнюю строку фрагмента кода, которые дублируют существующие строки в исходном файле.

  1. Если редактор создает отчет об ошибках в коде, щелкните правой кнопкой мыши в любом месте кода и выберите ‘Исправить выражения импорта’ или нажмите Ctrl+Shift+I. В диалоговом окне ‘Исправить все выражения импорта’ примите значения по умолчанию для обновления операторов импорта и нажмите OK.

Итак, метод FileChooser getSelectedFile() вызывается для определения файла, выбранного пользователем, в целях дальнейшей работы с ним. В этом примере считывается содержимое файлов, которое затем отображается в TextArea.

Реализация фильтра файлов

Теперь можно добавить пользовательский фильтр файлов, благодаря которому в выборе файлов будут отображаться только файлы *.txt .

  1. Переключитесь в режим конструирования и выберите элемент fileChooser в окне ‘Навигатор’.
  2. В окне ‘Свойства’ нажмите кнопку обзора (‘…​’) рядом со свойством fileFilter .
  3. В диалоговом окне «Фильтр файлов» выберите пользовательский код из поля со списком.

combobox small

  1. Введите new MyCustomFilter() в текстовое поле. Нажмите кнопку «ОК».
  2. Для использования пользовательского кода необходимо создать внутренний (или внешний) класс MyCustomFilter , расширяющий класс FileFilter . Чтобы создать внутренний класс, реализующий фильтр, скопируйте и вставьте следующий фрагмент кода в исходный код класса под операторами импорта.
 class MyCustomFilter extends javax.swing.filechooser.FileFilter < @Override public boolean accept(File file) < // Allow only directories, or files with ".txt" extension return file.isDirectory() || file.getAbsolutePath().endsWith(".txt"); >@Override public String getDescription() < // This description will be displayed in the dialog, // hard-coded = ugly, should be done via I18N return "Text documents (*.txt)"; >>

Примечание. Описание реализации более интеллектуальных, поддерживающих переключение фильтров файлов просмотрите метод addChoosableFileFilter.

Выполнение приложения

  1. Для запуска примера проекта щелкните проект JFileChooserDemo правой кнопкой мыши и нажмите кнопку «Выполнить».
  2. В диалоговом окне «Запуск проекта» выберите главный класс jfilechooserdemo.resources.JFileChooserDemo и нажмите кнопку «ОК».

run

  1. В меню ‘Файл’ запущенного демо-приложения выберите ‘Открыть’, чтобы инициировать действие. Результат должен иметь следующий вид:

result jfilechooserdemo small

Следует обратить внимание на другие полезные окна и диалоговые окна Swing, например ColorChooser или OptionPane в палитре графического интерфейса.

Источник

Оцените статью