Читаем Java 7 полностью

Листинг 14.11. Внутренние окна

import java.awt.*; import javax.swing.*;

public class IntFrame extends JFrame{

IntFrame(){

super(" Окно с внутренними окнами"); setLayout(new FlowLayout());

JInternalFrame ifrl =

new JInternalFrame(" Первое окно", true, true, true, true); ifr1.getContentPane().add(new JLabel(" Это первое внутреннее окно")); ifrl.setPreferredSize(new Dimension(200, 200)); ifrl.setVisible(true);

add(ifrl);

JInternalFrame ifr2 = new JInternalFrame(" Второе окно"); ifr2.getContentPane().add(new JButtonC^TO второе внутреннее окно")); ifr2.setPreferredSize(new Dimension(200, 200)); ifr2.setVisible(true);

add(ifr2);

setSize(400, 400);

setDefaultCloseOperation(EXIT ON CLOSE); setVisible(true);

}

public static void main(String[] args){ new IntFrame();

}

}

Рис. 14.11. Внутренние окна

Как И все окна Swing, внутреннее окно JInternalFrame содержит всего один компонент — корневую панель JRootPane — и обладает всеми методами работы с ней, перечисленными в предыдущих разделах.

К внутреннему окну можно применить все методы окна JFrame, за исключением остановки JVM — метод setDefaultcloseOperation (int) не принимает параметр EXIT_ON_CLOSE.

Рабочий стол JDesktopPane

Хотя внутренние окна можно поместить в любой контейнер, удобнее всего расположить их в специально разработанном внутреннем "рабочем столе" JDesktopPane. На нем размещаются окна верхнего уровня подобно тому, как на экране располагаются окна приложений.

Класс JDesktopPane расширяет класс JLayeredPane, следовательно, имеет множество слоев, благодаря чему компоненты могут перекрываться, но не управляется никаким менеджером размещения. Поэтому позицию и размеры компонента следует задавать методом setBounds (), как показано в листинге 14.12. На рис. 14.12 представлен вывод программы листинга 14.12.

Листинг 14.12. Внутренние окна на внутреннем рабочем столе

import java.awt.*; import javax.swing.*;

public class Desk extends JFrame{

Desk(){

super(" Внутренний рабочий стол");

JDesktopPane dp = new JDesktopPane(); setContentPane(dp);

JInternalFrame ifrl =

new JInternalFrame(" Первое окно", true, true, true, true); ifr1.getContentPane().add(new JLabel(" Это первое внутреннее окно")); ifrl.setBounds(l0,l0, 200,200); ifrl.setVisible(true);

dp.add(ifrl);

JInternalFrame ifr2 = new JInternalFrame(" Второе окно"); ifr2.getContentPane().add(new JButtonC^TO второе внутреннее окно")); ifr2.setBounds(l50, 200, 200, l00); ifr2.setVisible(true);

dp.add(ifr2);

setSize(400, 400);

setDefaultCloseOperation(JFrame.EXIT ON CLOSE); setVisible(true);

public static void main(String[] args){ new Desk();

}

}

Рис. 14.12. Внутренний рабочий стол

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

setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);

Стандартные диалоги JOptionPane

Хотя класс JDialog позволяет создавать любые диалоговые окна, в подавляющем большинстве случаев их назначение сводится к выводу сообщений (message), подтверждению или отмене каких-то действий (confirm) и вводу коротких сведений (input).

Класс JOptionPane предоставляет более двадцати статических методов для создания модальных диалоговых окон. Это три метода showMessageDialog ( ) с разными аргументами, создающие окна сообщений, четыре метода showConfirmDialog(), формирующие окна подтверждения, шесть методов showinputDialog(), создающие окна ввода, и один метод, создающий диалоговое окно общего вида — showOptionDialog (). Перечисленные методы создают диалоговые окна класса JDialog. Еще более десяти методов вида showinternalXxxDialog () предназначено для формирования внутренних диалоговых окон класса JInternalFrame.

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

□ in format Ion_mes sage — просто сообщение, в Java L&F это синий круг с буквой "i" внутри, как на рис. 14.20 (по умолчанию);

□ warning_message — предупреждение, желтый треугольник с восклицательным знаком внутри, как на рис. 14.15;

□ error_message — сообщение об ошибке, красный шестиугольник с "кирпичом" внутри, как на рис. 14.13;

□ question_message — вопрос, зеленый квадрат с вопросительным знаком внутри, как на рис. 14.14;

□ plain_message — произвольное сообщение без определенного ярлыка.

Сообщение любого типа можно снабдить произвольным ярлыком типа Icon, как на рис. 14.16. Это делается самым развитым из данной группы методов — статическим методом

static void showMessageDialog(Component parent, Object message,

String title, int type, Icon icon);

Для работы указанного метода задается родительское окно parent, строка заголовка title, сообщение message, его тип type — одна из констант, перечисленных ранее, и ярлык icon.

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных