ГИП. Диалоги

Содержание

Слайд 2

Слайд 3

Слайд 4

Слайд 5

Слайд 6

Слайд 7

(предупреждающее) (простое)

(предупреждающее)

(простое)

Слайд 8

Слайд 9

Пример 1 – стандартные диалоги import java.awt.*; //Проект - Диалоги 1-стандартные

Пример 1 – стандартные диалоги
import java.awt.*; //Проект - Диалоги 1-стандартные
import javax.swing.*;
public

class DialogDemo extends JComponent {
private static void createAndShowGUI(){
JFrame frame = new JFrame("Диалоги");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = JPanel();
frame.setContentPane(content); //можно так или как раньше
content.setBackground(Color.BLUE);
content.setBorder (
BorderFactory.createLineBorder(Color.RED,7));
frame.setSize(400,400);
frame.setLocation(10,10);
frame.setVisible(true);
Слайд 10

while (true) { JOptionPane.showMessageDialog(frame, "Пример для JOptionPane.showMessageDialog"); String response = JOptionPane.showInputDialog(frame,

while (true) {
JOptionPane.showMessageDialog(frame,
"Пример для JOptionPane.showMessageDialog");
String response = JOptionPane.showInputDialog(frame,

"Пример для JOptionPane.showInputDialog\n"+
"Введите текст и нажмите кнопку");
System.out.println("Ответ: " + response);
int iresponse = JOptionPane.showConfirmDialog(null,
"Пример для JOptionPane.showIConfirmDialog\n"+
"Продолжить?"); //объясните расположение диалога
System.out.println("Ответ: "+ iresponse);
if (iresponse == 1) break;
}
} // createAndShowGUI(){
Слайд 11

public static void main (String[] args){ javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){createAndShowGUI();}}); } } // DialogDemo

public static void main (String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void

run(){createAndShowGUI();}});
}
} // DialogDemo
Слайд 12

Слайд 13

После нажатия кнопки в предыдущем диалоге

После нажатия кнопки
в предыдущем диалоге

Слайд 14

После нажатия кнопки в предыдущем диалоге

После нажатия кнопки <ОК> в предыдущем диалоге

Слайд 15

После нажатия кнопки в предыдущем диалоге

После нажатия кнопки в предыдущем диалоге

Слайд 16

После нажатия кнопки в предыдушем диалоге и набора текста сообщения

После нажатия кнопки в предыдушем диалоге и набора текста сообщения

Слайд 17

После нажатия кнопки в предыдущем диалоге

После нажатия кнопки в предыдущем диалоге

Слайд 18

После нажатия кнопки в предыдущем диалоге

После нажатия кнопки в предыдущем диалоге

Слайд 19

Приложение запущено заново и во всех трех диалоговых окнах был нажат

Приложение запущено заново и во всех трех диалоговых окнах был нажат

значок «закрыть».

Результат одного прохода цикла:

Слайд 20

Слайд 21

Слайд 22

Пример 2 – создание собственного диалога

Пример 2 – создание собственного диалога

Слайд 23

import java.awt.*; //Проект - Диалоги 2-собственный import javax.swing.*; import java.awt.event.*; class

import java.awt.*; //Проект - Диалоги 2-собственный
import javax.swing.*;
import java.awt.event.*;
class MyDialog extends JDialog


implements ActionListener{
public MyDialog (JFrame parent){ //конструктор
// вызов конструктора базового класса
super (parent, "Мой диалог", true);
//родитель, название, true - модальный диалог
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add (new JLabel("Мой диалог"));
Слайд 24

JButton ok = new JButton ("OK"); ok.addActionListener(this); //слушаем JButton cancel =

JButton ok = new JButton ("OK");
ok.addActionListener(this); //слушаем
JButton cancel

= new JButton ("Отмена");
cancel.addActionListener(this); //слушаем
cp.add(ok); cp.add(cancel);
setSize(250,125);
setLocation(50,100);
setDefaultCloseOperation(
WindowConstants.DO_NOTHING_ON_CLOSE);
//не будет закрываться при нажатии на Х
} //конструктор
public void actionPerformed (ActionEvent e){
//обработчик событий
System.out.println (e); dispose(); } }
Слайд 25

import java.awt.*; import javax.swing.*; public class MyFrame{ private static void createAndShowGUI(){

import java.awt.*;
import javax.swing.*;
public class MyFrame{
private static void createAndShowGUI(){
JFrame frame

= new JFrame("Мой диалог");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
frame.setLocation(10,10);
frame.setVisible(true);
MyDialog md = new MyDialog (frame);
md.setVisible(true);
}
public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){createAndShowGUI();}});
}
}
Слайд 26

После запуска.

После запуска.

Слайд 27

После нажатия кнопки

После нажатия кнопки

Слайд 28

После нажатия кнопки

После нажатия кнопки <Отмена>

Слайд 29

Слайд 30

Слайд 31

Слайд 32

Слайд 33

Слайд 34

Статические методы: public static Color showDialog(Component component, String title, Color initialColor)

Статические методы:
public static Color showDialog(Component component,
String title,
Color initialColor)
throws

HeadlessException
Показывает модальный диалог выбора цвета. Если пользователь нажимает кнопку "OK", то диалог возвращает выбранный цвет и закрывается. Если пользователь нажимает кнопку "Cancel" или закрывает диалог, не нажимая "ОК", то метод скрывает диалог и возвращает пустой указатель.
Параметры:
component - родительский компонент для диалога
title - строка, содержащая название диалога
initialColor - начальный цвет
Исключение класса HeadlessException выдается, когда код, зависящий от клавиатуры, дисплея или мыши, вызывается в среде, которая не поддерживает клавиатуру, дисплей или мышь.
Метод демонстрируется в примере 3
Слайд 35

import java.awt.*; //Проект - 3 JColorChooser static method-showDialog import javax.swing.*; public

import java.awt.*; //Проект - 3 JColorChooser static method-showDialog
import javax.swing.*;
public class ColorDialogDemo

extends JComponent{
private static void createAndShowGUI(){
JFrame frame = new JFrame("Диалоги");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = new JPanel();
frame.setContentPane(content); //можно так или как раньше
content.setBackground(Color.BLUE);
content.setBorder (
BorderFactory.createLineBorder(Color.RED,7));
frame.setSize(600,400);
frame.setLocation(10,10);
frame.setVisible(true);
Color rez = JColorChooser.showDialog (frame,
"Выбор фона формы", Color.BLUE);
content.setBackground(rez);
}
public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){createAndShowGUI();}});
}}

Пример 3

Слайд 36

После запуска

После запуска

Слайд 37

Выбран новый цвет

Выбран новый цвет

Слайд 38

После нажатия кнопки

После нажатия кнопки

Слайд 39

Пользователь тренировался в выборе цветов (видно на панели Recent)

Пользователь тренировался в выборе цветов (видно на панели Recent)

Слайд 40

А потом нажал кнопку и получил :

А потом нажал кнопку и получил :

Слайд 41

После нажатия кнопки цвет фона изменился на цвет по умолчанию, а

После нажатия кнопки <Сansel> цвет фона изменился на цвет по умолчанию,

а нам нужно, чтобы он остался первоначальным (синим). Что делать?
Слайд 42

Статические методы: public static JDialog createDialog(Component c, String title, boolean modal,

Статические методы:
public static JDialog createDialog(Component c,
String title,
boolean modal,
JColorChooser

chooserPane,
ActionListener okListener,
ActionListener cancelListener)
throws HeadlessException
Создает и возвращает новый диалог, содержащий панель с указанным объектом класса JColorChooser и кнопками "ОК", "Cansel", и "Reset". Если кнопки "OK" или "Cancel" нажаты, диалог автоматически скрывается (но не разрушается). Если кнопка "Reset" будет нажата, то цвет вернется к предыдущему выбранному, и диалог останется видимым.
Параметры:
c - родительский компонент для диалога
title - название для диалога
modal - булево (true - диалог модальный)
chooserPane - объект класса JColorChooser, который будет помещен в диалоге
okListener - ActionListener-слушатель нажатия кнопки "ОК"
cancelListener - ActionListener-слушатель нажатия кнопки "Cansel»
Метод демонстрируется в примере 4
Слайд 43

// Проект - 4 JColorChooser static method-createDialog and show-со слушанием import

// Проект - 4 JColorChooser static method-createDialog and show-со слушанием
import java.awt.*;


import javax.swing.*;
import java.awt.event.*;
public class ColorDialogDemo extends JFrame
implements ActionListener{
JPanel content;
JColorChooser jcc;
public ColorDialogDemo(){ //конструктор
super ("Демонстрация JColorChooser.createDialog");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
content = new JPanel();
setContentPane(content);
content.setBackground(Color.BLUE);
content.setBorder (
BorderFactory.createLineBorder(Color.RED,7));
setSize(600,400);
setLocation(10,10);
setVisible(true);
Слайд 44

jcc = new JColorChooser (content.getBackground()); JDialog d = JColorChooser.createDialog (this, "Выбор

jcc = new JColorChooser (content.getBackground());
JDialog d = JColorChooser.createDialog (this,
"Выбор

фона формы", true, jcc, this, this);
d.show();
}
public void actionPerformed (ActionEvent e){ // обработчик
//чтобы при нажатии "Cancel" цвет не менялся
System.out.println(e);
if("OK".equals(e.getActionCommand()))
content.setBackground(jcc.getColor());
//фон меняется только при нажатии
}
}
Слайд 45

//запускающий класс import javax.swing.*; public class Main_class { public static void

//запускающий класс
import javax.swing.*;
public class Main_class {
public static void main (String[] args){

javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){ ColorDialogDemo cdm =
new ColorDialogDemo();}});
}
}
Слайд 46

После запуска и нажатия клавиши (цвет теперь не меняется)

После запуска и нажатия клавиши (цвет теперь не меняется)

Слайд 47

Пример 5. Стационарное размещение компонента JColorChooser на панели, которая будет слушать

Пример 5. Стационарное размещение компонента JColorChooser на панели, которая будет слушать

его событие изменения цвета (без кнопок).
Слайд 48

//Проект - 5 JColorChooser со слушателем ChangeListener import java.awt.*; import javax.swing.*;

//Проект - 5 JColorChooser со слушателем ChangeListener
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class

ColorDialog extends JPanel
implements ChangeListener {
JColorChooser jcc;
JLabel banner;
public ColorDialog(){ //конструктор
setLayout (new BorderLayout());
setBorder (
BorderFactory.createLineBorder(Color.RED,7));
Слайд 49

banner = new JLabel("Меняем цвет текста в баннере", JLabel.CENTER); banner.setPreferredSize(new Dimension(100,100));

banner = new JLabel("Меняем цвет текста в баннере",
JLabel.CENTER);
banner.setPreferredSize(new

Dimension(100,100));
banner.setForeground(Color.yellow);
banner.setBackground(Color.blue);
banner.setOpaque(true);
banner.setFont(new Font ("Serif", Font.BOLD, 24));
jcc = new JColorChooser(banner.getForeground());
jcc.getSelectionModel().addChangeListener(this);
add(jcc, BorderLayout.CENTER);
add(banner, BorderLayout.NORTH);
}
public void stateChanged(ChangeEvent e) { // обработчик
Color newColor = jcc.getColor();
banner.setForeground(newColor);
}
}
Слайд 50

import java.awt.*; import javax.swing.*; public class MyFrame{ private static void createAndShowGUI(){

import java.awt.*;
import javax.swing.*;
public class MyFrame{
private static void createAndShowGUI(){
JFrame frame

= new JFrame("Диалог JColorChooser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = new JPanel();
frame.setContentPane(content);
ColorDialog p = new ColorDialog();
content.add(p); // добавляем как обычный визуальный
// компонент
frame.setSize(550,550);
frame.setLocation(10,10);
frame.setVisible(true);
}
public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){createAndShowGUI();}});
}}
Слайд 51

После запуска

После запуска

Слайд 52

После выбора цвета

После выбора цвета

Слайд 53

В следующем примере мы будем использовать анонимный внутренний класс для реализации

В следующем примере мы будем использовать анонимный внутренний класс для реализации

слушателя событий.
Это удобно, когда событие одного типа может прийти от нескольких источников.
Преимущество: каждое событие слушает его собственный слушатель со своим собственным обработчиком (программисту не надо определять в программе от какого источника пришло событие – не надо лишних if).
Слайд 54

Пример 6. То же, но с анонимным слушателем. //Проект - 6

Пример 6. То же, но с анонимным слушателем.
//Проект - 6 JColorChooser

с анонимным слушателем ChangeListener
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class DialogDemo extends JComponent { //не включаем
//интерфейс ChangeListener
static JColorChooser jcc;
static JLabel banner;
private static void createAndShowGUI(){
JFrame frame = new JFrame("Диалог JColorChooser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = new JPanel();
frame.setContentPane(content);
content.setLayout (new BorderLayout());
content.setBorder (
BorderFactory.createLineBorder(Color.RED,7));
Слайд 55

banner = new JLabel("Меняем цвет текста в баннере", JLabel.CENTER); banner.setPreferredSize(new Dimension(100,100));

banner = new JLabel("Меняем цвет текста в баннере",
JLabel.CENTER);
banner.setPreferredSize(new

Dimension(100,100));
banner.setForeground(Color.yellow);
banner.setBackground(Color.blue);
banner.setOpaque(true);
banner.setFont(new Font ("Serif",Font.BOLD,24));
jcc = new JColorChooser(banner.getForeground());
jcc.getSelectionModel().addChangeListener(
new ChangeListener() { //анонимный слушатель
public void stateChanged(ChangeEvent e) {
Color newColor = jcc.getColor();
banner.setForeground(newColor);
}
}
);
Слайд 56

content.add(jcc, BorderLayout.CENTER); content.add(banner, BorderLayout.NORTH); frame.setSize(500,400); frame.setLocation(10,10); frame.setVisible(true); } public static void

content.add(jcc, BorderLayout.CENTER);
content.add(banner, BorderLayout.NORTH);
frame.setSize(500,400);
frame.setLocation(10,10);
frame.setVisible(true);
}

public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){createAndShowGUI();}});
}
}
Слайд 57

Слайд 58

Слайд 59

Пример 7. Стационарное размещение компонента JColorChooser и кнопки JButton на панели,

Пример 7. Стационарное размещение компонента JColorChooser и кнопки JButton на панели,

которая будет слушать событие кнопки.
//Проект - 7 JColorChooser с кнопкой и слушателем ActionListener import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class ColorDialog extends JPanel
implements ActionListener {
JColorChooser jcc;
JLabel banner;
JButton b1;
public ColorDialog(){
setLayout (new BorderLayout());
setBorder (
BorderFactory.createLineBorder(Color.RED,7));
Слайд 60

banner = new JLabel("Меняем цвет текста в баннере", JLabel.CENTER); banner.setPreferredSize(new Dimension(100,100));

banner = new JLabel("Меняем цвет текста в баннере",
JLabel.CENTER);
banner.setPreferredSize(new

Dimension(100,100));
banner.setForeground(Color.yellow);
banner.setBackground(Color.blue);
banner.setOpaque(true);
banner.setFont(new Font ("Serif",Font.BOLD,24));
jcc = new JColorChooser(banner.getForeground());
b1 = new JButton ("Установить выбранный цвет");
b1.addActionListener(this);
add (jcc, BorderLayout.CENTER);
add (banner, BorderLayout.NORTH);
add (b1, BorderLayout.SOUTH);
}
public void actionPerformed (ActionEvent e){
Color newColor = jcc.getColor();
banner.setForeground(newColor);
}
}
Слайд 61

import java.awt.*; import javax.swing.*; public class MyFrame{ private static void createAndShowGUI(){

import java.awt.*;
import javax.swing.*;
public class MyFrame{
private static void createAndShowGUI(){
JFrame frame

= new JFrame("Диалог JColorChooser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = new JPanel();
frame.setContentPane(content);
ColorDialog p = new ColorDialog();
content.add(p);
frame.setSize(550,550);
frame.setLocation(10,10);
frame.setVisible(true);
}
public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){createAndShowGUI();}});
}
}
Слайд 62

При выборе цвета, цвет текста в баннере не изменяется

При выборе цвета, цвет текста в баннере не изменяется

Слайд 63

Установка выбранного цвета текста в баннере осуществляется при нажатии кнопки «Установить выбранный цвет»

Установка выбранного цвета текста в баннере осуществляется при нажатии кнопки «Установить

выбранный цвет»
Слайд 64

Слайд 65

Слайд 66

Слайд 67

Пример 8. Применение JFileChooser // Проект - 8 JFileChooser - использование

Пример 8. Применение JFileChooser
// Проект - 8 JFileChooser - использование
import java.io.*;

// на будущее
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class MyFrame implements ActionListener{
public JFrame frame; //окно системы
//******************Имена файла и папки***************************
String DirectoryName = "C:/";
String FileName = "";
//*************************************************************************
File cur_File; // текущий файл
//*************************************************************************
public MyFrame(){ // конструктор
int WinSizeG = 600; //начальный размер окна по горизонтали
int WinSizeV = 500; //начальный размер окна по вертикали
frame = new JFrame("Диалоги");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Слайд 68

MenuSim s = new MenuSim(); Container myC = frame.getContentPane(); frame.setJMenuBar(s.mb1); //добавление

MenuSim s = new MenuSim();
Container myC = frame.getContentPane();
frame.setJMenuBar(s.mb1);

//добавление меню в окно
//****Организация прослушивания пунктов меню*******
s.newFile.addActionListener(this);
s.openFile.addActionListener(this);
s.saveFile.addActionListener(this);
s.closeFile.addActionListener(this);
s.startOtl.addActionListener(this);
s.stopOtl.addActionListener(this);
//********************************************************************
frame.setSize(WinSizeG,WinSizeV);
frame.setLocation(10,10);
frame.setVisible(true);
}

В принципе, можно было сделать прослушивание и обработку событий в классе MenuSim (меню), но можно и здесь.

Слайд 69

//**********методы для пункта меню "Файл"*********************** public void NewFile(){ //заглушка System.out.println ("Очистка

//**********методы для пункта меню "Файл"***********************
public void NewFile(){ //заглушка
System.out.println ("Очистка

визуальных и внутренних компонентов");
}
public void OpenDialog(){
//открывает окно диалога для сохранения файла
int rez; int n;
JFileChooser FCH = new JFileChooser(DirectoryName);
FCH.setDialogTitle("Открытие файла");
rez = FCH.showDialog(frame,"Open");
if (rez == FCH.APPROVE_OPTION){
cur_File = FCH.getSelectedFile();
//Сохраняем имя директории и имя файла.
//В следующий раз при открытии диалога
//будет выбрана директория с
//сохраненным именем
DirectoryName = cur_File.getAbsolutePath();
n = DirectoryName.lastIndexOf('\\');
FileName = DirectoryName.substring(n+1);
DirectoryName = DirectoryName.substring(0,n+1);
System.out.println("Ввод текста из файла " + FileName +
" папки "+ DirectoryName); //заглушка
} }
Слайд 70

private void SaveDialog(){ //открывает окно диалога для сохранения файла int rez;

private void SaveDialog(){
//открывает окно диалога для сохранения файла
int rez;

int n;
JFileChooser FCH = new JFileChooser(DirectoryName);
FCH.setDialogTitle("Сохранение файла");
rez = FCH.showDialog(frame,"Save");
if (rez == FCH.APPROVE_OPTION){
cur_File=FCH.getSelectedFile();
DirectoryName = cur_File.getAbsolutePath();
n = DirectoryName.lastIndexOf('\\');
FileName = DirectoryName.substring(n+1);
DirectoryName = DirectoryName.substring(0,n+1);
System.out.println("Сохранение текста в файле " +
FileName + " папки " + DirectoryName); //заглушка
}
}
public void CloseWindow() { frame.dispose(); }
Слайд 71

//********************методы для пункта меню "Отладчик"***************** public void StartDebug(){ System.out.println("Старт отладчика"); //заглушка

//********************методы для пункта меню "Отладчик"*****************
public void StartDebug(){
System.out.println("Старт отладчика"); //заглушка

}
public void StopDebug(){
System.out.println("Отладка завершена"); //заглушка
}
//********************Обработчик событий***************************************
public void actionPerformed (ActionEvent e){
if("Новый".equals(e.getActionCommand()))NewFile();
else if("Открыть".equals(e.getActionCommand()))OpenDialog();
else if ("Сохранить".equals(e.getActionCommand()))SaveDialog();
else if ("Закрыть".equals(e.getActionCommand()))CloseWindow();
else if ("Начать отладку".equals(e.getActionCommand()))
StartDebug();
else StopDebug();
}
//*******************Главный метод программы*********************************
public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){MyFrame MF = new MyFrame();}});
}}
Слайд 72

import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; public

import java.io.*; import java.awt.*; import javax.swing.*;
import java.awt.event.*; import javax.swing.event.*;
public class MenuSim

{ //меню симулятора
//подпункты меню
JMenuItem newFile; JMenuItem openFile;
JMenuItem saveFile; JMenuItem closeFile;
JMenuItem startOtl; JMenuItem stopOtl;
JMenu m1, m2; //пункты меню
JMenuBar mb1;//панель меню
public MenuSim(){ //конструктор
m1 = new JMenu("Файл");
newFile = new JMenuItem("Новый");
m1.add(newFile);
openFile = new JMenuItem("Открыть");
m1.add(openFile);
Слайд 73

saveFile = new JMenuItem("Сохранить"); m1.add(saveFile); closeFile = new JMenuItem("Закрыть"); m1.add(closeFile); m2

saveFile = new JMenuItem("Сохранить");
m1.add(saveFile);
closeFile = new JMenuItem("Закрыть");
m1.add(closeFile);

m2 = new JMenu("Отладчик");
startOtl = new JMenuItem("Начать отладку");
m2.add(startOtl);
stopOtl = new JMenuItem("Закончить отладку");
m2.add(stopOtl);
mb1 = new JMenuBar();
mb1.add(m1);
mb1.add(m2);
}
}
Слайд 74

Статический метод main, запускающий приложение, лучше определить в отдельном классе, как это сделано в следующем проекте.

Статический метод main, запускающий приложение, лучше определить в отдельном классе, как

это сделано в следующем проекте.
Слайд 75

public class Main { public static void main (String[ ] args){

public class Main {
public static void main (String[ ] args){
javax.swing.SwingUtilities.invokeLater(new

Runnable(){
public void run(){
MyFrame MF = new MyFrame();}});
}
}
Слайд 76

Выводятся все файлы, независимо от их расширения

Выводятся все файлы, независимо от их расширения

Слайд 77

После

После

Слайд 78

Слайд 79

После

После

Слайд 80

Слайд 81

Слайд 82

В последний пример внесены изменения: (Проект - 9 JFileChooser - использование_вид

В последний пример внесены изменения:
(Проект - 9 JFileChooser - использование_вид Windows)
public

static void main (String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){
try{UIManager.setLookAndFeel (
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e){ };
MyFrame MF = new MyFrame();}});
}
Слайд 83

Слайд 84

Диалог выбора с фильтром файлов. extends FileFilter FileFilter - это абстрактный

Диалог выбора с фильтром файлов.

extends FileFilter

FileFilter - это абстрактный класс, который

не имеет реализации по умолчанию. После реализации FileFilter можно установить в JFileChooser, чтобы нежелательные файлы не появлялись в списке каталогов.

Внесены изменения

Слайд 85

import java.io.File; import javax.swing.*; import javax.swing.filechooser.*; //фильтр файлов *.txt, *.bd //Нужен,

import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.*;
//фильтр файлов *.txt, *.bd
//Нужен, чтобы в окне диалога

выбора файлов отображались
// только файлы с указанными расширениями
public class TextFilter extends FileFilter {
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
//Получаем расширение файла
String extension = getExtension (f); //метод определен ниже
if (extension != null) {
if (extension.equals("txt") ||
extension.equals("bd")) {return true;}
else {return false;}
}
return false; }
Слайд 86

//Описание фильтра public String getDescription() { return "Текстовые файлы"; } //метод

//Описание фильтра
public String getDescription() {
return "Текстовые файлы";
}

//метод класса, не входящий в родительский класс FileFilter
private static String getExtension(File f) {
//возвращает расширение файла f
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
}
Слайд 87

Изменения в классе MyFrame public void OpenDialog(){ //открывает окно диалога для

Изменения в классе MyFrame
public void OpenDialog(){
//открывает окно диалога для открытия

файла
boolean f=false; String s=""; int rez; int n;
JFileChooser fch = new JFileChooser(DirectoryName);
fch.setDialogTitle("Открытие файла");
TextFilter text_filter = new TextFilter(); //создание фильтра файлов
fch.setFileFilter(text_filter); //установка фильтра на чузер
rez = fch.showDialog(frame,"Open");

private void SaveDialog(){
//открывает окно диалога для сохранения файла
int rez; int n;
JFileChooser fch = new JFileChooser(DirectoryName);
fch.setDialogTitle("Сохранение файла");
TextFilter text_filter = new TextFilter(); //создание фильтра файлов
fch.setFileFilter(text_filter); //установка фильтра на чузер
rez = fch.showDialog(frame,"Save");