Розробка програми на мові JAVA

Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування. Порівняльна характеристика середовищ розробки прикладних програм на мові JAVA. Ознайомлення з принципами і особливостями роботи певних класів, компонентів.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 31.01.2014
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Курсова робота

Розробка програми на мові JAVA

Зміст

ВСТУП

1. Сучасні тенденції програмування систем автоматизації

1.1 Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування

1.2 Порівняльна характеристика середовищ розробки прикладних програм на мові JAVA

2. Об'єкти JAVA

2.1 Характеристика класуTreeMap

2.2 Опис методу list()

2.3 Приклад використання об'єктів

3. ПРОЕКТНА ЧАСТИНА

3.1 Опис програмного продукту «Блокнот»

3.2 Коротка характеристика використаних у програмі компонентів

ВИСНОВКИ

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

ДОДАТКИ

Додаток А

Додаток Б

Вступ

В даній курсовій роботі ми описуємо одну з найбільш актуальних на сьогоднішній день мов програмування - мова Java. Вона легка у вивченні, дозволяє створювати програми, які можуть виконуватися на будь-якій платформі без яких-небудь доопрацювань (кросплатформеність).

Java орієнтована на Internet, і найпоширеніше її застосування - невеликі програми, аплети, які запускаються в браузері і є частиною HTML-сторінок. Також мова Java є об'єктно-орієнтованою і поставляється з досить об'ємною бібліотекою класів. На даний момент мова програмування Java є однією з самих кращих мов програмування, якою користуються серйозним програмістам.

Мета курсової роботи: процес розробки програмного продукту «Годинник» засобами інтегрованого об'єктно-орієнтованого середовища мови програмування JAVA, та дослідження його основних методів та класів.

Об'єкт курсової роботи - програмне середовище для створення прикладних програм з використанням мови Java NetBeans 6.9.1, призначене для розробки сучасних систем автоматизованого проектування.

Предметом курсової роботи є дослідження особливостей створення аплетів - складових елементів прикладного програмування засобами мови JAVA.

Завдання курсової роботи:

1.Детальне ознайомлення з принципами та особливостями роботи певних класів, компонентів, що використовувались у процесі розробки програми.

2. Опис класу TreeMap та методу list().

3.Створення програмного продукту Блокнот;

програма java автоматизоване проектування

1. Сучасні тенденції програмування систем автоматизації

1.1 Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування

Вражаюче зростання обчислювальної потужності комп'ютерів та широке розповсюдження програмного забезпечення проектування і виробництва, призвели до того що інженери можуть використовувати системи автоматизованого проектування (САПР) для вирішення повсякденних завдань, а не тільки для підготовки наочних ілюстрацій.

Система автоматизованого проектування, САПР - автоматизована система, що реалізує інформаційну технологію виконання функцій проектування, являє собою організаційно-технічну систему, призначену для автоматизації процесу проектування, що складається з персоналу і комплексу технічних, програмних та інших засобів автоматизації його діяльності.

Міжнародна конкуренція, збільшення числа досвідчених фахівців і підвищення вимог до якості змушують власників підприємств автоматизувати проектування і виробництво. Як наслідок цього, викладачі вищої школи відчувають потребу змінити програму своїх курсів, що відносяться до проектування, щоб навчити студентів користуватись САПР і дати їм уявлення про основні принципи що лежать в основі цих систем.

Сучасні підприємства не зможуть вижити у всесвітній конкуренції, якщо не будуть випускати нові продукти кращої якості (quality, Q), більш низької вартості (cost. С) і за менший час (delivery, D). Тому вони прагнуть використовувати величезні можливості пам'яті комп'ютерів, їх високу швидкодію і можливості зручного графічного інтерфейсу, для того, щоб автоматизувати і поєднати задачі проектування та виробництва, які раніше були вельми утомливими і зовсім не пов'язаними один з одним. Таким чином скорочується час і вартість розробки і випуску продукту. Для цієї мети використовуються технології автоматизованого проектування (computer-aided design - CAD), автоматизованого виробництва (computer-aided manufacturing CAM) і автоматизованої розробки або конструювання (computer-aided engineering CAE).

Автоматизоване проектування (computer-aided design - CAD) є технологією, яка полягає у використанні комп'ютерних систем для полегшення створення, зміни, аналізу та оптимізації проектів. Таким чином, будь-яка програма, що працює з комп'ютерною графікою, так само як і будь-яке застосування, яке використовується в інженерних розрахунках, відноситься до систем автоматизованого проектування. Іншими словами, безліч засобів CAD простирається від геометричних програм для роботи з формами до спеціалізованих приладних програм для аналізу та оптимізації. Між цими крайнощами використовуються програми для аналізу допусків, розрахунку мас, інерційних властивостей, моделювання методом кінцевих елементів і візуалізації результатів аналізу. Сама основна функція CAD - визначення геометрії конструкції (деталі механізму, архітектурні елементи, електронні схеми, плани будівель і.т.д), оскільки геометрія визначає всі наступні етапи життєвого циклу продукту. Для цієї мети зазвичай використовуються системи розробки робочих креслень та геометричного моделювання. Ось чому ці системи зазвичай і вважаються системами автоматизованого проектування. Більш того, геометрія, визначена на цих системах, може використовуватись в якості основи для подальших операції в системах САЕ і САМ. Це одна з найбільш значних переваг CAD, що дозволяє економити час і скорочувати кількість помилок, пов'язаних з необхідністю визначати геометрію конструкції з нуля кожен раз, коли вона потрібна в розрахунках. Можна стверджувати, що системи автоматизованої розробки робочих креслень і системи геометричного моделювання є найбільш важливими компонентами автоматизованого проектування.

Автоматизоване виробництво (computer - aided manufacturing - САМ) - це технологія, яка полягає у використанні комп'ютерних систем для планування, управління і контролю операції виробництва через прямий або непрямий інтерфейс з виробничими ресурсами підприємства. Одним з найбільш зрілих підходів до автоматизації виробництва є числове програмне управління (ЧПУ, numerical control - NC). ЧПУ полягає у використанні запрограмованих команд для керування верстатом, який може шліфувати, різати, фрезерувати, штампувати, згинати та іншими способами перетворювати заготовки в готові деталі. У наш час комп'ютери здатні генерувати великі програми для верстатів з ЧПУ на підставі геометричних параметрів виробів з бази даних CAD і додаткових відомостей що надаються оператором. Дослідження в цій області концентруються на скороченні необхідності втручання оператора.

Ще одна важлива функція систем автоматизованого виробництва. Програмування роботів, які можуть працювати на гнучких, автоматизованих ділянках, вибираючи і встановлюючи інструменти на оброблювані деталі на станках з ЧПУ. Роботи можуть також виконувати свої власні завдання, наприклад займатися зварюванням, складанням і перенесенням обладнання і деталей по цеху. Планування процесів також поступово автоматизується. План процесів може визначати послідовність операцій з виготовлення пристрою від початку і до кінця на всьому необхідному обладнанні. Хоча повністю автоматизованого планування процесів, як уже зазначалося, практично неможливо, план обробки конкретної деталі цілком може бути сформульований автоматично, якщо вже є плани обробки аналогічних деталей. Для цього була розроблена технологія групування, що дозволяє об'єднувати схожі деталі та сімейства. Деталі вважаються подібними, якщо вони мають загальні виробничі особливості (гнізда, пази, фаски, отвори і т. д,). Для автоматичного виявлення схожості деталей необхідно, щоб база даних CAD містила відомості про такі особливості. Це завдання здійснюється за допомогою об'єктно-орієнтованого моделювання або розпізнавання елементів. До того ж, комп'ютер може використовуватися для того, щоб виявляти необхідність замовлення вихідних матеріалів і покупки деталей, а також визначати їх кількість виходячи з графіка. Називається така діяльність плануванням технічних вимог до матеріалу (material requirements planning MRP). Комп'ютер може також використовуватися для контролю стану верстатів в цеху і відправлення їм відповідних завдань.
Автоматизоване конструювання (computer-aided engineering - САЕ) - це технологія, що складається і використанні комп'ютерних систем для аналізу геометрії CAD, моделювання і вивчення поведінки продукту для вдосконалення і оптимізації його конструкції. Засоби САЕ можуть здійснювати безліч різних варіантів аналізу. Програми для кінематичних обчислень наприклад, здатні визначити траєкторію руху і швидкості ланок у механізмах. Програми динамічного аналізу з великими зсувами можуть використовуватися для визначення навантажень і зсувів складних пристроях. Програми верифікації та аналізу логіки та синхронізації імітують роботу складних електронних кіл.

З усіх методів комп'ютерного аналізу найбільш широко в конструюванні використовується метод кінцевих елементів (finite-element method -- FEM). З його допомогою розраховуються напруга, деформації, теплообмін, розподіл магнітного поля, потоки рідин і інші завдання з безперервними середовищами, вирішування яких будь-яким іншим методом виявляється просто непрактично. У методі кінцевих елементів аналітична модель структури представляє собою з'єднання елементів, завдяки чому вона розбивається на окремі частини, які можуть оброблятись комп'ютером.

Як зазначалося раніше, для використання методу скінченних елементів потрібна абстрактна модель відповідного рівня, а не сама конструкція. Абстрактна модель відрізняється від конструкції тим, що вона формується шляхом виключення несуттєвих деталей і редукування розмірностей. Наприклад, трьохвимірний об'єкт невеликої товщини може бути представлений у вигляді двомірної оболонки. Модель створюється або в інтерактивному режимі, або автоматично. Готова абстрактна модель розбивається на кінцеві елементи, що утворюють аналітичну модель. Програмні засоби дозволяють конструювати абстрактну модель і розбивати її на кінцеві елементи, називаються препроцесорами (preprocessors). Проаналізувавши кожний елемент, комп'ютер збирає результати воєдино і представляє їх у візуальному форматі. Наприклад, області з високим навантаженням можуть бути виділені червоним кольором. Програмні засоби, що забезпечують візуалізацію, називаються постпроцесорами (postprocessors). Існує безліч програмних засобів для оптимізації конструкцій. Хоча засоби оптимізації можуть бути віднесені до классу САЕ, зазвичай їх розглядають окремо. Ведуться дослідження можливості автоматичного визначення форми конструкції шляхом об'єднання оптимізації і аналізу У цих підходах вихідна форма конструкції передбачається проста наприклад, як у прямокутного двовимірного об'єкта, що складається з різних елементів різної щільності. Потім виконується процедура оптимізації, що дозволяє визначити конкретні значення щільності, що дозволяють досягти зазначену ціль з урахуванням обмежень напруги. Метою часто являється мінімалізація ваги. Після визначення оптимальних значень щільності розраховується оптимальна форма об'єкта. Вона отримується відкиданням елементів з низькими значеннями щільності.

Перевага методів аналізу та оптимізації конструкцій полягає в тому, що вони дозволяють конструктору побачити поведінку кінцевого продукту та виявити можливі помилки при створенні і тестуванні реальних прототипів, уникнувши певних витрат. Оскільки вартість виробництва на останніх стадіях розробки і виробництва продукту експоненціально зростає, рання оптимізація окуповуються значним знижений термінів і вартості розробки.
Таким чином, технології CAD, САМ і САЕ заключаються в автоматичному підвищення ефективності конкретних стадій життєвого циклу продукту. Розвиваючись незалежно, ці системи ще не до кінця реалізували потенціал інтеграції проектування і виробництва. Для вирішення цієї проблеми була запропонована нова технологія що отримала назву комп'ютерного інтегрованого виробництва(сomputer-integrated manufacturing -- CIM). CIM намагається поєднати «частини автоматизації» разом і перетворити їх в безперебійно працюючу систему. Під CIM розуміється використання комп'ютерної бази даних для більш ефективного управління всім підприємством, зокрема бухгалтерією, плануванням, доставкою та іншими завданнями, а не тільки проектуванням і виробництвом, які охоплювались системами CAD, САМ і САЕ. СІМ часто називають філософією бізнесу, а не комп'ютерною системою.

Види САПР систем

- AutoCad - сама поширена САПР не російського виробництва.

- ADEM - САПР для конструкторсько-технологічної підготовки машинобудівних і металорізальних підприємств і програмування обладнання з ЧПУ.

- AutomatiCS - програмний пакет, розроблений компанією CSoft Development, призначений для автоматизації проектування, реконструкції та експлуатації систем контролю та управління, врахування енергії, ланцюгів вторинної комутації.

- IndorCAD - система проектування автомобільних доріг.

- КОМПАС - розповсюджена САПР компанії АСКОН у варіантах для двовимірної та трьохвимірної графіки.

- 3design CAD - САПР для ювелірного та графічного дизайну.

- Cadmech - універсальна САПР в області машинобудування, яка розширює функціональні можливості AutoCad, Inventor, NX, Solid Edge, Pro/ENGINEER, SolidWorks.

- CADElectro - САПР для проектування енергооснащення.

1.2 Порівняльна характеристика середовищ розробки прикладних програм на мові JAVA

Java - об'єктно-орієнтована мова програмування, що розробляється компанією Sun Microsystems і офіційно випущена 23 травня 1995 року. Програми на Java транслюються в байт-код, що виконується віртуальною java-машиною (JVM) - програмою, яка оброблює байтовий код і інструкції, що передаються, устаткуванню як інтерпретатор, але з тією відмінністю, що байтовий код, на відміну від тексту, обробляється значно швидше. Іншою важливою особливістю технології Java є гнучка система безпеки завдяки тому, що виконання програми повністю контролюється віртуальною машиною.

Існує значна кількість середовищ розробки для платформи Java. Найпопулярнім є Eclipse. На Eclipse базуються також IBM WebSphere Studio, Borland JBuilder (починаючи з версії 2007), Oracle Workshop for WebLogic та інші.

Eclipse -- вільне модульне інтегроване середовище розробки програмного забезпечення(рис.1)

Рисунок 1.1 - Середовище розробки Eclipse

Розробляється і підтримується Eclipse Foundation. Eclipse являє собою фреймворк для розробки модульних кросс-платформових застосувань із низкою особливостей:

можливість розробки програмного забезпечення на багатьох мовах програмування (рідною є Java );

крос-платформова;

модульна, призначена для подальшого розширення незалежним розробниками;

з відкритим вихідним кодом;

розробляється і підтримується фондом Eclipse, куди входять такі постачальники програмного забезпечення, як IBM, Oracle, Borland.

Спочатку проект розроблявся в IBM як корпоративний стандарт IDE, настановлений на розробки на багатьох мовах під платформи IBM. Потім проект було перейменовано на Eclipse і надано для подальшого розвитку спільноті.

Eclipse насамперед повноцінна Java IDE, націлена на групову розробку, має засоби роботи з системами контролю версій (підтримка CVS входить у поставку Eclipse, активно розвиваються кілька варіантів SVN модулів, існує підтримкаVSS та інших). З огляду на безкоштовність, у багатьох організаціях Eclipse -- корпоративний стандарт для розробки програмного забезпечення на Java.

Друге призначення Eclipse -- служити платформою для нових розширень. Такими стали C\C++Development Tools (CDT), розроблювані інженерами QNX разом із IBM, засоби для підтримки інших мов різних розробників. Безліч розширень доповнює Eclipse менеджерами для роботи з базами даних, серверами та ін.

Основою Eclipse є платформа розширеного клієнта (RCP -- від англ. rich client platform). Її складають такі компоненти:

Ядро платформи (завантаження Eclipse, запуск модулів);

OSGi (стандартне середовище постачання комплектів);

SWT (стандартний інструментарій віджетів);

JFace (файлові буфери, робота з текстом, текстові редактори);

Робоче середовище Eclipse (панелі, редактори, проекції, майстри).

GUI в Eclipse написаний з використанням інструментарію SWT. Останній, на відміну від Swing (який лише емулює окремі графічні елементи використовуваної платформи), дійсно використовує графічні компоненти даної системи. Призначений для користувача інтерфейс Eclipse також залежить від проміжного шару GUI, так званого JFace, який спрощує побудову призначену для користувача інтерфейсу, що базується на SWT.

Гнучкість Eclipse забезпечується за рахунок модулів, що підключаються, завдяки чому можлива розробка не тільки на Java, але і на інших мовах, таких як C\C++, Perl, Groovy, Ruby, Python, PHP, ErLang та інших.

NetBeans IDE - вільне середовище розробки додатків на мовах програмування Java, JavaFX, Python, PHP, JavaScript, C++, Ада та ін.(рис.2.2)

Рисунок 1.2 - Середовище розробки NetBeans

Середовище розробки NetBeans за умовчанням підтримує розробку для платформ J2SE і J2EE.

Проект NetBeans IDE підтримується і спонсорується фірмою Oracle, проте розробка NetBeans ведеться незалежно співтовариством розробників (NetBeans Community) і компанією NetBeans Org.

За якістю і можливостям останні версії NetBeans IDE змагається з найкращим інтегрованими середовищами розробки для мови Java, підтримуючи рефакторинг, профілювання, виділення синтаксичних конструкцій кольором, автодоповнення мовних конструкцій на льоту, шаблони коду та інше.

У версії NetBeans IDE 6.0 підтримується UML, SOA, мова програмування Ruby(включаючи підтримку Ruby on Rails), і засоби застосунків на J2ME. NetBeans IDE підтримує плагіни, дозволяючи розробникам розширювати можливості середовища. У версії NetBeans IDE 6.1 підтримується UML, SOA, мова програмування Ruby (включаючи підтримку Ruby on Rails), а також кошти для створення додатків на J2ME телефонів. У версії 6.5 додана підтримка мови PHP. Також для тестування викладений модуль підтримки Python.

NetBeans IDE підтримує плагіни, дозволяючи розробникам розширювати можливості середовища. Одним з найпопулярніших плагінів є потужний дизайнер звітів iReport (заснований на бібліотеці JasperReports). На ідеях, технологіях і в значній частині на вихідному коді NetBeans IDE базуються пропоновані фірмою Sun комерційні інтегровані середовища розробки для Java - Sun Java Studio Creator, Sun Java Studio Enterprise і Sun Studio (для ведення розробки на C, C + + або Фортран). Порівняно недавно Sun стала пропонувати ці середовища розробки безкоштовно для зареєструвалися в Sun Developer Network (SDN) розробників, сама ж реєстрація на сайті безкоштовна і не вимагає ніяких попередніх умов, окрім згоди з ліцензією CDDL.

NetBeans IDE доступна у вигляді готових дистрибутивів (прекомпільованних бінарних файлів) для платформ Microsoft Windows, Linux, FreeBSD, MacOS X, OpenSolaris і Solaris (як для SPARC, так і для x86 - Intel і AMD). Для інших платформ доступна можливість скомпілювати NetBeans самостійно із вихідних кодів.

У релізі NetBeans IDE 6.7 була додана інтеграція з Project Kenai, підтримка мови Groovy та веб-фреймворку Grails. У версії 6.8 - підтримка PHP-фреймворку Symfony, а в 6.9 - Zend Framework.

Java Development Kit, (JDK) -- безкоштовно розповсюджуваний Sun комплект розробника для застосування на мові Java, який включає в себе компілятор Java (javac), стандартні бібліотеки класів Java, приклади, документацію, різноманітні утиліти і виконавчу систему Java (рис.2.3).

Рисунок 1.3 - Комплект розробника для застосування на мові Java

В склад JDK не входить інтегроване середовище розробки на Java (IDE), тому розробник, що використовує тільки JDK, має використовувати текстовий редактор і компілювати свої програми через утиліти командного рядка. Усі середовища розробки на Java, такі, як Eclipse, Netbeans, IntelliJ IDEA, Borland JBuilder, спираються на сервіси JDK, що надаються, і викликають для компіляції Java-програм компілятор з комплекту JDK. Тому ці середовища розробки або включають в комплект постачання одну з версій JDK або вимагають для своєї роботи попередній інсталяції JDK на машині розробника. З певного часу фірма Sun надає повні вихідні тексти JDK, включаючи вихідні тексти самого Java-компілятора. Існують JDK інших виробників, доступні для ряду платформ. Частина з них починалася з вихідного коду Sun JDK, частина - ні. Всі вони строго виконують базові специфікації Java, але зазвичай відрізняються в областях, для яких немає явних специфікацій. Наприклад, збірка сміття, стратегії компіляції і техніки оптимізації. Вони включають: J9 JDK від IBM, для AIX, Linux, MVS, OS/400, Pocket PC, JRockit JDK від Oracle Corporation (колишня BEA JRockit від BEA Systems), для Windows, Linux і Solaris, Apache Harmony JDK для Windows і Linux Blackdown Java - Порт Sun JDK для Linux від Blackdown Group. Mac OS Runtime для Java JVM / JDK від Apple для Mac OS.

2. Об'єкти JAVA

2.1 Характеристика класу TreeMap

Карта(map) -- це об'єкт, який зберігає значення між ключами та значеннями. По заданому ключу можна знайти тип його значення. Як і ключі так і значення являються об'єктами Java. Ключі можуть бути унікальними, але їх значення дублюватись. Деякі карти допускають null-ключі та null-значення, деякі -- ні.

Є один ключовий момент відносно карт, який важливо пам'ятати: всі вони не реалізуються інтерфейсом Iterable. Це означає, що ви не зможете проходити в циклі по карті використовуючи форму ''for each '' циклу for. Більш того ви не зможете отримати інтератор карти. Але можливо отримати представленні карти у вигляді колекції, які допускають використання як і циклу так і інтераторів.

Інтерфейс Map відображає унікальні ключі по їх значенню. Ключ -- це об'єкт, який ви використовуєте для подальшого вилучення даних. Задаючи ключ та значення, можете переміщати значення в об'єкт Map. Після того як це значення збережене ви можете отримати його по ключу.

Об'явлення інтерфейсу Map:

interface Map<K, V>

де K -- вказує тип значення, а V -- тип даних, які зберігаються.

Методи об'явлення Map зібрані в таблиці 2.1. Деякі методи виключають використання ClassCastExeption, коли об'єкт являється несумісним з об'єктами карти. Виключення NullPointerExeption ініціюється якщо при намаганні використати null-об'єкт, коли дана карта цього не допускає. Виключення UnsupportedOperationException, що генерується при намаганні змінити карту, яка не модифіковується.

Карти використовуються навколо двох основних операцій: get() та put(). Для того щоб помістити значення в карту, використовуйте put(), попередньо вказавши ключ та значення. Для того щоб отримати значення виконайте get(), передаючи ключі в якості аргументів. Значення буде повернуто. Не дивлячись на те що карти являються частиною каркасу колекції, самі по собі вони не реалізують інтерфейс Collection, однак ви можете отримати представлення карт у вигляді колекцій. Для цього можна використати метод entrySet(). Він повертає Set, який містить елементи карти. Для того, щоб отримати колекційне представлення ключів використовуйте метод keyset().

Таблиця 2.1 - Методи використанні в Map

Метод

Опис

void clear()

Видаляє всі пари ''ключ-значення'' з викликаної карти

boolean containsKey(Object k)

Повертає true, якщо викликана карта містить ключ k. В протилежному випадку повертає false.

boolean containsValue(Object v)

Повертає true, якщо викликана карта містить ключ v. В протилежному випадку повертає false.

set<Map.Entry<K, V>> entrySet()

Повертає Set, який містить всі значення карти. Містить об'єкти типу Map.Entry. Тобто цей метод представляє карту у вигляді набору.

boolean equals(Object obj)

Повертає true, якщо obj -- це Map, що містить знакові значення. В протележному випадку викликає false

boolean equals(Object obj)

Повертає true,якщо obj -- Map, що містить одинакові значення. В протилежному випадку повертає false

V get (Object k)

Повертає значення асоційоване з ключем k. Повертає null якщо ключ не знайдений.

int hashCode()

Повертає хеш-код викликаної карти.

boolean isEmpty()

Повертає true, якщо викликана карта порожня. В протилежному випадку викликає false.

Set<K> keySet()

Повертає Set, котрий містить ключі викликаної карти. Цей метод викликає ключі викликаної карти у вигляді набору.

V put(K k, V v)

Переміщує елемент в викликану карту, перезаписуючи будь-яке попереднє значення, асоційоване з ключем. Ключ та значення це -- k та v . Повертає null, якщо ключ раніше не існував. В протилежному випадку повертається попереднє значення, зв'язане з ключем.

void putAll(Map<? Extends K, ? extends V> m)

Поміщає всі значення з m в карту.

V remove (Object k)

Видаляє елемент ключ якого рівний k.

Int size()

Повертає число пар ''ключ-значення'' в карті.

Сollection<V> values()

Повертає колекцію, що містить значення карт. Цей метод представляє значення, що містяться в карті у вигляді колекції.

Для того, щоб отримати колекційне представлення значень, використовуйте values().

Колекційні представлення -- це засоби, використовуючи які карти інтегруються у великий каркас колекцій.

Реалізацію інтерфейсів карт пропонують декілька класів. Класи котрі можуть бути використані для карт представленні в таблиці 2.2

Таблиця 2.2 - Класи котрі можуть бути використанні для карт

Клас

Функція

AbstractMap

Реалізує більшу частину інтерфейсу Map.

EnumMap

Розширює AbstractMap для використання з ключами enum.

HashMap

Розширює AbstractMap для використання хеш-таблиць.

TreeMap

Розширює AbstractMap для використання для використання дерева.

WeakHashMap

Розширює AbstractMap для використання хеш-таблиць зі слабкими ключами.

LinkedHashMap

Розширює HashMap, розширюючи інтератори у порядку вставки.

IndentifyHashMap

Розширює AbstractMap та використовує перевірку посилочної еквівалентності при порівняні документів.

Клас TreeMap розширює AbstractMap та реалізує інтерфейс NavigatebleMap. Він створює карту розміщену в деревоподібній структурі. TreeMap пропонує ефективний спосіб зберігання пар ''ключ -- значення'' в сортованому порядку та дозволяє швидке вилучення. Потрібно відмітити, що на відміну від хеш-карт, карта-дерево(tree-map) гарантує, що її елементи будуть відсортовані в порядку росту ключів. TreeMap являється загальним класом з наступним об'явленням:

class TreeMap<K, V>

де K вказує тип ключів, а V -- тип даних, що зберігаються

В TreeMap визначенні наступні конструктори:

TreeMap()

TreeMap(Comparator<? Super K> comp)

TreeMap(Map<? Extends K, ? extends V> m)

TreeMap(SortedMap<K, ? extends V> sm)

Перша форма створює пусту карту-дерево, яка буде відсортована з використанням простого порядку ключів. Друга форма конструює пусту карту, засновану на дереві, що буде відсортована з використанням Comparator Comp. Третя форма ініціалізує карту-дерево з елементами з m, що будуть відсортовані по звичайному порядку ключів. Четверта форма створює карту-дерево з елементами із sm, які будуть відсортовані в тому ж порядку що і sm.

TreeMap не визначає додаткових методів, крім тих, що присутні в інтерфейсі NavigableMap і в класі AbstractMap.

Клас TreeMap відрізняється від інших тим, що його елементи впорядковані по ключу.

Впорядкування, яке підтримується у відсортованій карті повинне бути у відповідності з еквівалентом, якщо воно відсортоване по карті, для правильного застосовування карти-інтерфейсу. Поведінка відсортованої карти є чітко визначеною, навіть якщо її упорядкування є несумісним.

Асинхронна реалізація. Якщо кілька потоків отримали доступ до карти одночасно, то принаймні один з потоків змінює карту структурно, в такому випадку вона повинна бути синхронізована зовні. Це звичайно досягається шляхом синхронізації на певний об'єкт, що, природньо інкапсулює карту. Якщо такий об'єкт існує, карта повинна бути "загорнута" з використанням методу Collections.synchronizedMap. Найкраще це робити під час програмування, для запобігання випадкового несинхронізованого доступу до карти:

Map m = Collections.synchronizedMap (new TreeMap (...));

public TreeMap() створює нову порожню карту, яка сортуються відповідно до "природного порядку ключів. Всі ключі, які вставлені в карту повинні реалізувати порівняльний інтерфейс. Крім того, всі такі ключі повинні бути порівнянні між собою та не повинні покидати ClassCastException для будь-яких елементів K1 і K2 в карті. Якщо користувач намагається покласти ключ в карту, яка порушує це обмеження (наприклад, користувач намагається поставити рядок ключа в карту, ключі якої є цілими числами) користувач повинен викликати ClassCastException.

public TreeMap (Comparator с) створює нову порожню карту, яка сортуються відповідно до даного компаратора. Всі ключі вставлені в карту повинні бути порівнянні між собою по даному компаратору: comparator.compare (K1, K2), які не повинні покидати ClassCastException для будь-якого ключа K1 і K2 в карті. Якщо користувач намагається покласти ключ в карту, яка порушує це обмеження, потрібно викликати ClassCastException.

Параметри:

C -- компаратор, який буде використовуватися для сортування карти. Null значення вказує, що ключі повинні бути використанні "природного порядку".

public TreeMap ( Map m) створює новий шар, що містить ті ж відображення в якості даної карти, які сортуються відповідно до ключів «природного порядку». Всі ключі вставлені в новій карті повинні бути реалізовані порівняльним інтерфейсом. Цей метод працює в N * Log (N) часу.

public TreeMap ( SortedMap m)

Створює новий шар, що містить такі самі карти як і SortedMap та сортуються відповідно з тим самим порядком. Цей метод працює за лінійний час.

2.2 Опис методу list()

Кілька методів класу Thread призначені для полегшення налагодження багато потокових додатків. Ці ресурси використовуються для виведення інформації про стан програми. Нижче наведено список методів класу Thread, що допомагають у процесі налаштування:

public String toString() повертає рядковий опис потоку, що включає його ім'я, пріоритет і назву групи.

public static void dumpStack() виводить у System.out зміст стека для поточного потоку. Також існує ряд налагоджувальних засобів для відстеження стану групи потоків.

Наступні методи викликаються для об'єктів ThreadGroup та видають інформацію про їх стан:

public String toString() повертає рядковий опис групи, що включає її ім'я та пріоритет.

public synchronized void list() виводить у System.out список вміст групи та її підгруп.

Public Srting[] list() повертає список файлів в каталозі. Якщо об'єкт File являє собою не каталог, а дещо інше, передається null; в протилежному випадку повертається масив з іменами файлів. Список містить всі файли каталогу, за виключенням еквівалентів ''.'' та ''..'' (текучий та батьківський каталоги відповідно).

Часто вам буде потрібно обмежити кількість файлів методом list(), для включення тільки тих файлів, які відповідають певному шаблону імен, або фільтру. Для того, щоб зробити це, потрібно використати другу форму list():

String[] list(FilenameFilter FFObj) в цій формі FFObj -- об'єкт класу, що реалізує інтерфейс FilenameFilter. FilenameFilter визначає єдиний метод accept(), що викликається по одному разу з кожним файлом в списку. Його загальна форма така:

public String[] list(FilenameFilter filter)

boolean accept (File directory, String filename)

Використовує заданий фільтр для зіставлення списку файлів в каталозі. Метод File.equals заслуговує особливу увагу. Два об'єкти File рахуються рівними в тому випадку, якщо співпадають їх повні імена, а не в тому, якщо вони представляють один і той самий файл в системі. Метод File.equals не може використовуватись для вияснення того, чи відповідають два об'єкти File одному і тому самому файлу. Для створення файлів використовуються об'єкти класу FileOutputStream або RandomAccessFile, а не об'єкти класу File. Нарешті залишається пам'ятати, що символ File.pathSeparatorChar та рядок File.pathSeparator являють собою символ, що розділяє каталоги чи файли в цілому імені. Наприклад в системі, UNIX для розділення компонентів повного імені використовують дві крапки: “.:/bin:/usr/bin”. Як наслідок, в системі UNIX символ pathSepar, a torChar являє собою дві крапки. Повне ім'я файлу зберігається в захищеному рядковому полі з ім'ям String. Підкласи File можуть у разі необхідності безпосередньо звертатися до цього поля або модифікувати його.

Інтерфейс FilenameFilter дозволяє створювати об'єкти, які фільтрують списки файлів і видаляють з них непотрібні. Він містить всього один метод:
boolean accept (File dir, String name),що повертає true, якщо файл з ім'ям name в каталозі dir повинен входити в відфільтрований список.

Спочатку ми створюємо об'єкт File, котрий представляє собою каталог, що вказується в командному рядку. Потім ми конструюємо об'єкт DirFilter і передаємо його в якості параметра методу list. Для кожного імені, що входить до каталогу, list викликає метод accept об'єкта-фільтра і включає ім'я до списку лише в тому випадку, якщо об'єкт-фільтр повертає true. Для нашого методу accept значення true показує, що ім'я відповідає каталогу.

public void list(PrintStream out)

Виводить властивості зі списку в заданий потік PrintStream. Метод корисний під час налагодження програми. Після створення об'єкту неможливо змінити його допоміжний перелік властивостей. Якщо це все ж необхідно зробити, можна створити підклас класу Properties і змінити значення захищеного поля defaults, яке містить список властивостей по замовчуванню.

Існують варіації метода list(), так звана listFiles(), яка може виявитись дуже корисною. Сигнатури listFiles() показані нижче:

File[] listFiles()

File[] listFiles(FilenameFilter FFObj)

File[] listFiles(FilesFilter FObj)

Ці методи повертають список файлів в вигляді масиву об'єктів File замість рядків. Перший метод повертає всі файли, а другий -- тільки ті, що задовольняють вказаному FilenameFilter. Крім повернення масиву об'єктів File, ці дві версії listFiles(), що працюють точно так як методи list().

Третя версія listFiles() повертає ті файли, в яких шляхові імена відповідають вказаному FileFilter. FileFilter визначає єдиний метод accept(), котрий викликається один раз для кожного файлу в списку. Його загальна форма така:

boolean accept(File path) метод accept() повертає true для файлів, що повинні бути включені в список(тобто ті, що відповідають аргументу path), а також false -- для тих, котрі повинні бути виключені.

2.3 Приклад використання об'єктів

В даній програмі буде виконано присвоювання цифрових значень для набору елементів.

Приклад використання TreeMap:

import java.util.*;

class TreeMapDemo{

public static void main(String args[]){

//створити карту-дерево

TreeMap<String, Double> tm=new TreeMap<String, Double>();

//перемістити елементи в карту

tm.put(''Джон Доу'', new Double(3434.34));

tm.put(''Том Сміт'', new Double(123.22));

tm.put(''Джейн Бейкер'', new Double(1378.00));

tm.put(''Тод Халл', new Double(99.22));

tm.put(''Ральф Сміт'', new Double(-19.08));

//отримати набір елементів

Set<Map.Entry<String, Double>> set = tm.entrySet();

//відобразити елементи

for(Map.Entry<String, Double> me : set) {

System.out.print(me.getKey()+'': '');

System.out.print(me.getValue());

}

System.out.println();

//добавити 1000 на рахунок Джона Доу

double balance = tm.get(''Джон Доу'');

tm.put(''Джон Доу'', balance + 1000);

System.out.println(''Новий баланс Джона Доу: '' +

tm.get(''Джон Доу''));

} }

Ось так виглядає вивід програми:

Джейн Бейкер: 1378.0

Джон Доу: 3434.34

Ральф Сміт: -19.08

Тод Халл: 99.22

Том Сміт: 123.22

Новий рахунок Джона Доу: 4434.34

У наступному прикладі обчислюється кількість входжень різних слів у речення. Слова і відповідні кількості зберігаються в асоціативному масиві. Використання класу TreeMap гарантує алфавітний порядок слів (ключів).

import java.util.*;

public class WordsCounter {

public static void main(String[] args) {

Map<String, Integer> m = new TreeMap<String, Integer>();

String s = "the first men on the moon";

StringTokenizer st = new StringTokenizer(s);

while (st.hasMoreTokens()) {

String word = st.nextToken();

Integer count = m.get(word);

m.put(word, (count == null) ? 1 : count + 1);

}

for (String word : m.keySet())

System.out.println(word + " " + m.get(word));

} }

Метод accept() повертає true для файлів каталогу, що вказані в directory, і що повинні бути включені в список(тобто ті що відповідають аргументу filename), та повертає false для файлів, котрі потрібно виключити зі списку.

Клас OnlyExt реалізує FilenameFilter. Він буде використаний так, щоб обмежити видимість імен файлів, повернутих методом list(), тільки тими з них, що закінчуються розширенням, вказаним при конструюванні цього об'єкта.

Import java.io.*;

public class OnlyExt implements FilenameFilter {

String ext;

public OnlyExt(String ext) {

this.ext = ''.'' + ext;

}

public boolean accept(File dir, String name){

return name.endWith(ext); }}

Модифікована програма перегляду лістингу каталогів показана нижче. Тепер вона буде виводити тільки файли з розширенням .html.

Каталог файлів .HTML:

import java.io.*;

class DirListOnly {

public static void main(String args[]){

String dirname = ''/java'';

File f1 = new File(dirname);

FilenameFilter only = new OnlyExt(''html'');

String s [] = f1.list(only);

for (int i =0; i<s.length; i++) {

System.out.println(s[i]);

}}}

public String[] list(FilenameFilter filter)

У наступному прикладі об'єкт FilenameFilter використовується для того, щоб до списку включалися тільки каталоги:

import java.io.*;

class DorFilter implements FilenameFilter {

public boolean accept(File dir, String name) {

return newFile(dir, name).isDirectory();

}

public static void main(String[] args) {

File dir = new File(args [0]);

String[] files = dir.list(new DirFilter());

System.out.println(files.length + ''dir(s): '');

for (int i = 0; i<< filter.length; i++)

System.out.println(''\t ''+files[i]);

3. Проектна частина

3.1 Опис створення програмного продукту

Для того щоб створити програмний продукт «Блокнот» нам потрібно запустити інтегроване програмне середовище Net Beans. Після запуску нам потрібно зайти на вкладку «Файл» та вибрати пункт «Создать проект»(рис.3.1)

Рисунок 3.1 - Створення проекту в Net Beans

Першим кроком при створені проекту буде вибір категорії «Java» та включені в нього пункту «Приложения Java»(рис. 3.2)

Рисунок 3.2 - Створення проекту

Другим кроком при створені проекту буде задання його імені, а також при бажанні ми можемо змінити місце розташування головного проекту, натиснувши клавішу «Обзор» та вказавши відповідну директорію (рис 3.3).

Після завершення налаштувань натисніть клавішу «Завершить».

Рисунок 3.3 - Задання імені проекту та його навігації

Як ми бачимо перед нами створився головний клас «Main». На разі нам не потрібно виконувати будь-які маніпуляції з головним класом.

Далі нам потрібно додати клас в наш проект. Для цього нам потрібно клацнути правою клавішею миші по пакеті з вихідними файлами, вибрати вкладку «Создать» та вибрати пункт «Клас» (рис 3.4)

Рисунок 3.4 - Створення класу

В наступному меню нам необхідно ввести ім'я класу та натиснути клавішу «Завершить» (рис. 3.5)

Рисунок 3.5 - Меню створення класу

Ось ми створили клас NotePad. В закладці NotePad.java потрібно прописати наступний код(Додаток А)

Рисунок 3.6 - Опис класу NotePad

Аналогічним чином створюємо клас MyTextArea та прописуємо його код(Додаток Б)

Після створення та опису класів необхідно помістити зображення з іменами:

cut, copy, paste, select_all зі значенями width=15, height=15 в каталог з класами:

локальний диск \назва проекту\ build\ classes\ notepad.

Наступним нашим кроком буде побудова проекту. Для цього потрібно зайти у вкладку «Выполнить» та вибрати пункт «Построить главный проект», або просто натиснувши гарячу клавішу F11.

При правильному виконанні інструкцій проект успішно побудується.

Для запуску проекту необхідно натиснути правою клавішею миші по головному класі та вибрати пункт «Выполнить файл»(рис 3.7)

Рисунок 3.7 - Спосіб запуску проекту

Перед нами з'являється вікно програми(рис 3.8)

Рисунок 3.8 - Програма в роботі

3.2 Коротка характеристика використаних у програмі елементів

Код програми «Блокнот» міститься в класі NotePad, що в свою чергу міститься в класу JFrame. Клас JFrame є контейнером, що дозволяє додавати до себе інші компоненти для їх організації та надання користувачеві.

JFrame насправді робить більше, ніж просто дозволяє вам розміщувати компоненти на ньому і надавати їх користувачеві. Незважаючи на всю його простоту, він фактично є одним з найскладніших компонентів в Swing-пакетах. JFrame виступає як міст між незалежними від OS Swing-частинами і реальної OS, на якій вони працюють. JFrame реєструється як вікно в OS і таким чином отримує знайомих властивостей вікна операційної системи: мінімізація / максимізація, зміна розмірів і переміщення. Хоча для цілей даного керівництва абсолютно досить вважати JFrame палітрою, на якій ви розміщуєте компоненти. Деякими з методів, які ви можете викликати за JFrame для зміни його властивостей, є: 

get/setTitle(): - Отримати/встановити заголовок фрейму. 

get/setState(): - Отримати/встановити стан фрейму (мінімізувати,максимізувати і т.д.). 

is/setVisible(): - Отримати/встановити видимість фрейму, іншими словами, відображення на екрані. 

get/setLocation(): -Отримати/встановити місце розташування у вікні, де фрейм повинен з'явитися. 

get/setSize(): -Отримати/встановити розмір фрейму. 

add (): - Додати компоненти до фрейму.

Клас JTabbedPane використовується для створення закладок.

Метод super відповідає за підпис графічного вікна програми.

Клас FileInputStream призначений для читання потоку байтів, таких даний як зображення. Для читання символів використовується клас FileReader. FileInputStream отримує вхідний байт з файлу в файловій системі. Такі файли доступні взалежності від приймаючого середовища.

Клас ZipInputStream реалізує вхідний потік фільтра для читання файлів у форматі ZIP. Включає підтримку для стислих і не стиснутих записів.

BufferedInputStream розширює функціональні можливості іншого вхідного потоку, а саме, здатність здатність буфера та підтримки марки і скидання методів.

Метод setDefaultCloseOperation (INT) використовується для зміни поведінки об'єктів за замовчуванням.

Метод addWindowListener() викликає слухача вікна подій.

Метод setSize() визначає розміри графічної оболонки програми.

Метод setVisible() відповідає за видимість вікна. При набуванні значеня true - вікно буде видимим, при значені false - невидимим.

Клас WindowAdapter являється абстрактним класом, для отримання віконних подій. Методи, що наявні в класі є порожніми.

Метод getWindowAdapter() викликає клас WindowAdapter.

Клас FileOutputStream використовується для запису потоків та рядків байт, наприклад зображення.

Клас ZipOutputStream реалізовує вихідний потік фільтру для запису файлів в форматі ZIP. Включає підтримку для стиснутих та нестиснутих файлів.

Клас BufferedOutputStream реалізує буфер вихідного потоку.

Під час виконання проектної частини було здійснено імпорт наступних бібліотек:

java.awt.event.*; - бібліотека виконує функцію обробки подій;

java.util.*; - містить загальні утиліти;

java.util.zip.*; - читає та записує зжаті та незжаті zip-файли;

java.io.*; - використовується для вводу/виводу даних;

javax.swing.*; - містить «легкі» компоненти;

java.awt.event.*; - використовує інтерфейси і класи для роботи з різними типами подій AWT компонентів;

Висновок

В даній курсовій роботі було виконано загальну характеристику, опис особливостей програмування та мовного забезпечення сучасних систем автоматизованого проектування. Також було здійснено порівняльну характеристику середовищ розробки прикладних програм на мові JAVA. А саме: JDK, NetBeans та Eclipse.

Згідно завдань було здійснено:

1.Детальне ознайомлення з принципами та особливостями роботи певних класів, компонентів, що використовувались у процесі розробки програми.

2. Опис класу TreeMap та методу list(). Та наведенні приклади їх застосування.

3. Було створено та детально описано процес написання програмного продукту «Блокнот». Також, вказано особливості створення програми та правильне її завантаження.

Список використаних джерел

1. Мартин Дж. Организация баз данных в вычислительных системах.-- М.:Мир,1980.

2. Тиори Т., Фрай Дж. Проектирование структур баз данных: В 2-х кн.--М.:Мир, 1985.

3. Четвериков В.Н. и др. Базы и банки данных.-- М.: Высшая школа, 1987.

4. Змитрович А.И. Базы данных.--Минск.: Университетское, 1981.

5. Бойков.В., Савинков В.М. Проектирование баз данных информационных систем. М. Мир 2007.

6. Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантрі Програмування на Java - ДиаСофтЮП, 2010.

7. Герберт Шилтд, Джеймс Холмс, Искусство программирования на Java, М: Вильямс, 331с.

8. Монкур, Майкл Освой самостоятельно JavaScript за 24 часа; М.: Вильямс, 2009. - 320 c.

Додаток А

Лістинг коду NotePad.java

package notepad;

import java.util.*;

import java.util.zip.*;

import java.io.*;

import java.awt.event.*;

import javax.swing.*;

/**

*

* @author Markus

*/

public class Notepad extends JFrame {

private Properties properties;

private JTabbedPane tabbedPane;

public Notepad() {

super("Блокнот");

properties = new Properties();

//завантажуємо дані

try{

FileInputStream in = new FileInputStream("data.not");

ZipInputStream inz = new ZipInputStream(in);

inz.getNextEntry();

BufferedInputStream input = new BufferedInputStream(inz,8192);

properties.loadFromXML(input);

input.close();

}catch(IOException e) {

//у випадку коли невдалось отримати дані з файлу, то створюємо порожню properties

for(char i = '\u0410';i < '\u0430'; i ++ )

properties.put(String.valueOf(i),"");

}

tabbedPane = new JTabbedPane();

for(char i = '\u0410';i < '\u0430'; i ++ ) {

String s = (String)properties.get(String.valueOf(i));

tabbedPane.add(String.valueOf(i),new JScrollPane(new MyTextArea(s)));

}

add(tabbedPane);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

addWindowListener(getWindowAdapter());

setSize(600,400);

setVisible(true);

}

//похідний метод повертає слухач подій вікна

private WindowAdapter getWindowAdapter() {

return new WindowAdapter() {

public void windowClosing(WindowEvent e) {

//змінюємо дані в properties

for(char i = '\u0410';i < '\u0430'; i ++ ) {

JScrollPane p = (JScrollPane)tabbedPane.getComponentAt(i - 0x0410);

MyTextArea t = (MyTextArea)p.getViewport().getView();

properties.put(String.valueOf(i),t.getText());

}

//зберігаємо дані у файлі

try{

FileOutputStream ou = new FileOutputStream("data.not");

ZipOutputStream ouz = new ZipOutputStream(ou);

ouz.putNextEntry(new ZipEntry("Data"));

BufferedOutputStream output = new BufferedOutputStream(ouz,8192);

properties.storeToXML(output,"Data");

output.close();

}catch(IOException exc) {;}

}

};

}

public static void main(String[]args) {

new Notepad();

}

}

Додаток Б

Лістинг коду MyTextArea.java

package notepad;

import java.awt.event.*;

import javax.swing.*;

/**

*

* @author Markus

*/

class MyTextArea extends JTextArea implements ActionListener , MouseListener {

private ImageIcon cutImage ;

private ImageIcon copyImage ;

private ImageIcon pasteImage ;

private ImageIcon selectAllImage ;

MyTextArea(String text) {

super (text);

addMouseListener(this);

Class clas = getClass() ;

cutImage = new ImageIcon(clas.getResource("cut.gif"));

copyImage = new ImageIcon(clas.getResource("copy.gif"));

pasteImage = new ImageIcon(clas.getResource("paste.gif"));

selectAllImage = new ImageIcon(clas.getResource("select_all.gif"));

}

// реалізація інтерфейсу ActionListener

public void actionPerformed(ActionEvent e) {

JMenuItem jMenuItem = (JMenuItem)e.getSource();

String s = jMenuItem.getText();

if(s.equals("Вирізати")) {

cut();

return ;

}

if(s.equals("Копіювати")) {

copy();

return ;

}

if(s.equals("Вставити")) {

paste();

return;

}

if(s.equals("Виділити все")) {

selectAll();

return ;

}

}

// реалізація інтерфейсу MouseListener

public void mouseClicked(MouseEvent e) {

;

}

public void mouseEntered(MouseEvent e) {

;

}

public void mouseExited(MouseEvent e) {

;

}

public void mousePressed(MouseEvent e) {

if ( e.getButton() == 3) {

JPopupMenu меню = new JPopupMenu();

// в поле без тексту ми можемо тільки дещо вставити:

JMenuItem пункт_1 = new JMenuItem("Вставити",pasteImage);

пункт_1.addActionListener(this);

меню.add(пункт_1);

// якщо в полі є текст то ми можемо його виділити

if (!(getText().equals(""))) {

JMenuItem пункт_2 = new JMenuItem("Виділити все",selectAllImage);

пункт_2.addActionListener(this);

меню.add(пункт_2);

}

// якщо в компоненті є виділений текст то ми можемо його копіювати та вирізати

if (getSelectedText() != null) {

JMenuItem пункт_3 = new JMenuItem("Копіювати",copyImage);

JMenuItem пункт_4 = new JMenuItem("Вирізати",cutImage);

пункт_3.addActionListener(this);

пункт_4.addActionListener(this);

меню.add(пункт_3);

меню.add(пункт_4);

}

int x = e.getX();

int y = e.getY();

меню.show(this,x,y);

} }

public void mouseReleased(MouseEvent e) {

}}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.