Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пример 3.6.

Читайте также:
  1. V. Примерный образец теста, применяемого для промежуточной аттестации
  2. Web-контейнер, Servlet, JSP. Структура, назначение и пример сервлета или JSP.
  3. А вот чрезмерное употребление алкоголя действительно вызывает гинекомастию. Примерно четверо из 10 хронических алкоголиков имеют это заболевание в той или иной стадии развития.
  4. А. Здравомыслов.Примерно два года тому назад.
  5. Ая основа – Хаджури не видит разницы между нововведенцем, призывающим к своему нововведению, и не призывающим, и пример в этом он взял с Махмуда Хаддада.
  6. Будьте хорошим примером для своих детей
  7. Быть примером
  8. В наших примерах мы ни разу не рассматривали конструкторы классов, поэтому при создании экземпляров наших классов вызывался конструктор класса object.
  9. В приведенном примере нарушение синтезов пространственного гнозиса и обусловливает ряд следствий, что можно представить схематично.
  10. В только что приведенном вами примере с под­брасыванием монеты компьютерное моделирование

 

package GraphicsExampleFrame.java;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.awt.print.*; /** * класс отображает объекты GraphicsExample * при помощи Swing-компонентов JFrame и JTabbedPane */public class GraphicsExampleFrame extends JFrame { public GraphicsExampleFrame(final GraphicsExample[] examples) { super("GraphicsExampleFrame"); Container cpane = getContentPane(); // задаем окно cpane.setLayout(new BorderLayout()); final JTabbedPane tpane = new JTabbedPane(); // и панель cpane.add(tpane, BorderLayout.CENTER); // добавление полосы меню JMenuBar menubar = new JMenuBar(); // полоса this.setJMenuBar(menubar); // помещаем в окно JMenu filemenu = new JMenu("File"); // меню File menubar.add(filemenu); // помещаем в полосу JMenuItem print = new JMenuItem("Print"); // элемент Print filemenu.add(print); // помещаем в меню JMenuItem quit = new JMenuItem("Quit"); // элемент Quit filemenu.add(quit); // помещаем в меню // назначаем действие элементу Print print.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // выбираем графический пример // вызываем метод print print(examples[tpane.getSelectedIndex()]); } }); // назначаем действие элементу меню Quit quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); // событие закрытия окна this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // размещение объектов на панель for(int i = 0; i < examples.length; i++) { GraphicsExample e = examples[i]; tpane.addTab(e.getName(), new GraphicsExamplePane(e)); } } /** * внутренний класс Swing * отображает объект GraphicsExample */ public class GraphicsExamplePane extends JComponent { GraphicsExample example; // отображаемый пример Dimension size; // объем памяти public GraphicsExamplePane(GraphicsExample example) { this.example = example; size = new Dimension(example.getWidth(), example.getHeight()); } /** рисуем компонент и пример */ public void paintComponent(Graphics g) { g.setColor(Color.white); // цвет фона g.fillRect(0, 0, size.width, size.height); // белый g.setColor(Color.black); // цвет по умолчанию example.draw((Graphics2D) g, this); // перерисовка } // методы, определяющие размер компонента public Dimension getPreferredSize() { return size; } public Dimension getMinimumSize() { return size; } } /** метод, вызываемый элементом Print */ public void print(final GraphicsExample example) { // задание принтеру PrinterJob job = PrinterJob.getPrinterJob(); // передача объекта в оболочку Printable // и задание PrinterJob для печати job.setPrintable(new PrintableExample(example)); // вывод диалога печати if (job.printDialog()) { // команда печати try { job.print(); } catch(PrinterException e) { System.out.println("печать невозможна: " + e.getMessage()); } } } /** * интерфейс Printable для организации печати * объекта GraphicsExample. **/ class PrintableExample implements Printable { GraphicsExample example; // печатаемый пример // конструктор запоминает пример public PrintableExample(GraphicsExample example) { this.example = example; } /** * метод реализует задачу PrinterJob **/ public int print(Graphics g, PageFormat pf, int pageIndex) { // Задание PrinterJob if (pageIndex!= 0) return NO_SUCH_PAGE; // PrinterJob предоставляет объект Graphics для рисования. // Все, что нарисовано, послано на принтер. // Взаимодействие объектов. Graphics2D g2 = (Graphics2D)g; // отступ. g2.translate(pf.getImageableX(), pf.getImageableY()); // размер области и примера double pageWidth = pf.getImageableWidth(); double pageHeight = pf.getImageableHeight(); double exampleWidth = example.getWidth(); double exampleHeight = example.getHeight(); // масштабирование примера double scalex = 1.0, scaley = 1.0; if (exampleWidth > pageWidth) scalex = pageWidth/exampleWidth; if (exampleHeight > pageHeight) scaley = pageHeight/exampleHeight; double scalefactor = Math.min(scalex, scaley); if (scalefactor!= 1) g2.scale(scalefactor, scalefactor); // метод draw() передает принтеру объект // Graphics2D example.draw(g2, GraphicsExampleFrame.this); // Сообщение PrinterJob, что страница непечатана return PAGE_EXISTS; } } /** * главная программа. Применяем в Java отражение для загрузки классов * GraphicsExample и создания их объектов **/ public static void main(String[] args) { GraphicsExample[] examples = new GraphicsExample[args.length]; // цикл по аргументам командной строки for(int i=0; i < args.length; i++) { // имя класса примера String classname = args[i]; // если пакет не задан, то класс находится в этом пакете if (classname.indexOf('.') == -1) classname = "com.davidflanagan.examples.graphics."+args[i]; // создаем оюъект класса GraphicsExample try { Class exampleClass = Class.forName(classname); examples[i] = (GraphicsExample) exampleClass.newInstance(); } catch (ClassNotFoundException e) { // неизвестный класс System.err.println("не могу найти пример: " + classname); System.exit(1); } catch (ClassCastException e) { // неверный тип класса System.err.println("Class " + classname + " is not a GraphicsExample"); System.exit(1); } catch (Exception e) { // у класса нет конструктора // перехват InstantiationException, IllegalAccessException System.err.println("невозможно создать экземпляр: " + classname); System.exit(1); } } // Создаем окно для отображения примеров GraphicsExampleFrame f = new GraphicsExampleFrame(examples); f.pack(); f.setVisible(true); }}

 




Дата добавления: 2015-09-11; просмотров: 27 | Поможем написать вашу работу | Нарушение авторских прав

Пример 2.8. | Пример 2.15. | Пример 2.16. | Пример 2.18. | Пример 2.19. | Пример 2.20. | Пример 2.21. | Пример 2.26. | Пример 3.1. | Пример 3.4. Обработка изображений. |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав