Swing & SWT

Слайд 2

Компоненты Swing Иван Портянкин «Swing. ЭФФЕКТНЫЕ ПОЛЬЗОВАТЕЛЬСКИЕ ИНТЕРФЕЙСЫ»


Компоненты Swing

Иван Портянкин «Swing. ЭФФЕКТНЫЕ ПОЛЬЗОВАТЕЛЬСКИЕ ИНТЕРФЕЙСЫ»

Слайд 3

Model/View/Controller, MVC

Model/View/Controller, MVC

Слайд 4

UI-представители

UI-представители

Слайд 5

Классы компонентов Swing UIManager. setLookAndFeel() UIManager. getSystemLookAndFeel()

Классы компонентов Swing

UIManager. setLookAndFeel()
UIManager. getSystemLookAndFeel()

Слайд 6

JApplet Jbutton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JDesktopPane JDialog JEditorPane JFileChooser

JApplet Jbutton JCheckBox JCheckBoxMenuItem
JColorChooser JComboBox JComponent JDesktopPane
JDialog JEditorPane JFileChooser JFormattedTextField
JFrame JInternalFrame JLabel

JLayeredPane
JList JMenu JMenuBar JMenuItem
JOptionPane JPanel JPasswordField JPopupMenu
JProgressBar JRadioButton JRootPane Jwindow
JScrollBar JScrollPane JSeparator JSlider
JSpinner JSplitPane JTabbedPane JTable
JTextArea JTextField JTextPane JToggleButton
JToolBar JToolTip JTree Jviewport
JRadioButtonMenuItem
Слайд 7

Поток EventDispatchThread и очередь событий EventQueue get Toolkit().getSystemEventQueue().postEvent ( new WindowEvent(source, WindowEvent.WINDOW_CLOSING)):

Поток EventDispatchThread и очередь событий EventQueue

get Toolkit().getSystemEventQueue().postEvent (
new WindowEvent(source,
WindowEvent.WINDOW_CLOSING)):

Слайд 8

Swing и потоки компоненты Swing не обладают встроенной синхронизацией работаем из

Swing и потоки

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

потокобезопасные методы: repaint(), revalidate(), validate(), invalidate()
с моделью можно работать из другого потока
переключение потоков: invokeLater(), invokeAndWait()
исключения: JTextArea и JEditorPane
Слайд 9

Рисование в Swing

Рисование в Swing

Слайд 10

Контейнеры в Swing

Контейнеры в Swing

Слайд 11

(JMenuBar is optional) rootPane.getContentPane().add(child); rootPane.getContentPane().setLayout(new BoxLayout());

(JMenuBar is optional)

rootPane.getContentPane().add(child);
rootPane.getContentPane().setLayout(new BoxLayout());

Слайд 12

Default - Этот слой используется для всех обычных компонентов, которые вы

Default - Этот слой используется для всех обычных компонентов, которые вы
добавляете

в контейнер. В нем же располагаются внутренние окна
многодокументных приложений
Palette - Слой предназначен для размещения так называемых палитр, или окон
с набором инструментов, которые обычно перекрывают остальные
элементы интерфейса. Создавать такие окна позволяет панель
JDesktopPane, которая размещает их как раз в этом слое
Modal - Судя по названию, разработчики планировали использовать этот слой
для размещения легковесных модальных диалоговых окон
Popup - Наиболее часто используемый слой, служащий для размещения всплывающих меню и подсказок
Drag - Самый верхний в стопке слой. Предназначен для обслуживания операций перетаскивания (drag and drop), которые должны быть хорошо видны пользователю