Приложение 3. Контейнер FileDialog .



 

Контейнер FileDialog – это модальное окно с владельцем типа Frame, содержащее стандартное окно выбора файла операционной системы для открытия (константа LOAD) или сохранения (константа SAVE). Окна операционной системы создаются и помещаются в объект класса FileDialog автоматически.

В классе три конструктора:

· FileDialog (Frame owner) – создает окно с пустым заголовком для открытия файла;

· FileDialog (Frame owner, String title) – создает окно открытия файла с заголовком title;

· FileDialog (Frame owner, String title, int mode) – создает окно открытия или сохранения документа; аргумент mode имеет два значения: FileDialog.LOAD и FileDialog.SAVE.

Методы класса getDirectory() и getFile() возвращают только выбранный каталог и имя файла в виде строки String. Загрузку или сохранение файла затем нужно производить методами классов ввода / вывода.

Можно установить начальный каталог для поиска файла и имя файла методами setDirectory (String dir) и setFile (String fileName).

Вместо конкретного имени файла fileName можно написать шаблон, например, *.java (первые символы – звездочка и точка), тогда в окне будут видны только имена файлов, заканчивающиеся точкой и словом java.

Метод setFilenameFilter (FilenameFilter filter) устанавливает шаблон filter для имени выбираемого файла. В окне будут видны только имена файлов, подходящие под шаблон. Этот метод не реализован в SUN JDK на платформе MS Windows.

События

Кроме событий класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent, при изменении размеров окна, его перемещении или удалении с экрана, а также показа на экране происходит событие WindowEvent.

 


Приложение 4. Создание таблиц

 

Для создания таблиц используется компонент JTable, обладающий довольно сложной структурой, которая, впрочем, скрыта от пользователя. Таким образом, на основе лишь нескольких строк кода возможно получить полнофункциональную таблицу.

Компонент JTable не хранит информацию о содержимом в себе, а использует т.н. модель таблицы. Для создания модели предусмотрен специальный класс AbstractTableModel, в котором необходимо переопределить следующие методы:

public int getRowCount(); – возвращает количество строк в таблице.

public int getColumnCount(); – возвращает количество столбцов.

public object getValueAt (int row, int column); – возвращает содержимое ячейки в ряду row и столбце column.

Как видно из прототипа метода, в ячейке таблицы может находиться любой объект, в частности, строка или картинка. Для помещения числа в ячейку, необходимо использовать соответствующий числовой объект:

return new Integer(100);

Для задания названий столбцам таблицы необходимо переопределить метод:

public int getColumnName (int c);

Параметр с указывает на номер столбца. Внутри должна быть конструкция switch-case (или if-else), возвращающая на каждый номер с названием колонки.

public String getColumnName (int c) {

if (c == 0)

return «Ф.И.О.»;

else if (c == 1)

return «Должность»;

else if (c==2)

return «Зарплата»;

else if (c == 3)

return «Год»;

else if (c == 4)

return «Месяц»;

else if (c == 5)

return «День»;

else

return null;

}

Также в абстрактной модели таблицы можно непосредственно хранить данные в том или ином виде и предусмотреть методы для их модификации. После модификации данных нужно сообщить JTable о том, что структура таблицы / количество строк изменились, для этого используются такие методы класса AbstractTableModel, как fireRowsInserted и пр.

Далее создаётся экземпляр класса JTable, в конструкторе которого указываются объект модели таблицы:

JTable empTable = new JTable(myTableModel);

Модель таблицы может быть указана и позже с помощью метода setModel.

И, наконец, для создания полос прокрутки на элементе воспользуемся стандартным методом – поместим таблицу на панель типа JScrollPane:

JScrollPane pane= new JScrollPane(empTable);

Осталось разместить готовую панель на форме. Воспользуемся следующим кодом:

this.getContentPane().add(pane);

В программе требуется информация о выделенной строке таблицы. Для получения данных необходимо:

1. Ограничить пользователя выбором одной строки. Для этого необходимо задать режим выбора строк таблицы.

table.getSelectionModel().setSelectionMode(mode)

Параметр mode принимает три значения:

0 – выбирается одна строка.

1 – несколько смежных строк.

2 – несколько произвольных строк.

2. Для получения номера выбранной строки воспользоваться методом getSelectedRow().

Примечание: Для режима выбора нескольких строк существует метод getSelectedRows(), возвращающий массив int[] номеров выделенных строк.

 

 


Дата добавления: 2019-07-15; просмотров: 165; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!