Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Заочники 2020-2021 / java_zaoch_sem_1

.pdf
Скачиваний:
93
Добавлен:
15.06.2021
Размер:
264.96 Кб
Скачать

list.add(3L);

 

 

Вышепривеперемесоздаиндиеобавлениечислаееной3

 

. Т.к.

LinkedList реализуетинтерфейс

List,то

перемеожнобъявлятьпростоную

какList,неLinkedList.

 

 

List<Long> list;

 

 

Внутри <…> указываетсякакойтип

 

импеютременныевколлекции.Там

можетбытьабсолютнолюбойкласс,втомчидругаяслеколлекция.

 

 

Исключения

ВязыкеJava

объектисключениявсегдаявляетсяэкземпляромкласса,

 

производногоот

Throwable

 

 

(http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html).

Уэтогоклассаестьдвапрямыхпотомка

 

 

java.lang.Error и java.lang.Exception.

Класс Error иегонаследописываютникиутренношибкситуации, е

 

связанные снехваткойресурсов,системеподдыпржкио.лненияманд

 

Ниодинобъектэтоготипасамостоятельносгенерироватьневозм. жно

 

 

Чащевсегоприходитсталкиватькла самия

 

 

Exception иегонаследниками.

Всехпрямыхпотомков

 

 

Exception можразндаоелитьве

категории:

unchecked(RuntimeException ивсеегоп томки

) и unchecked(всеостальные)

исключения.Исключениятипа

RuntimeException возникаютвследствие

ошибокпрограммневерноеания,напр, ипмеритипов,вызодедениеза

 

 

пределымассива,попыткаобратитьс

 

 

як null объекту.

Чтобыброскакоелитьбосключениенеобходимовоспользоваться

 

 

ключесловомым

 

 

throw иуказатьобъектисключения

.

throw new IOException();

Дляобработкиисключенийсуществуеткла истблоковзчtry,масая catch, finally.

21

try {

// блок try

}catch(IOException e) { //блокcatch

}finally {

// блок finally

 

 

}

 

 

Блок catch – люббл,вкоторомкйвывхотитепойматьисключение.Вблоке

 

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

 

возниисключений.новенияВ

catch указываетсяприкакомипесключение

необходимовыполнитьдействие.Вданномприблокере

catch будетвызван

привозникновении

IOException, либолюбодруисключенияго,готорое

 

являетсяпотомком

IOException. Блоков catch можетбытьлюбоеколичество.

Блок finally вызывсегда.Неважновозниетсялиисключениеилинет.о

 

Необязнаблоковличиетельно

catch и finally. Можетбытолькоуказан

catch илитолько

finally.

 

Вслучае,есливметодевынехотитеобрабатывать

checked исключение

ходитеотдатьобр

аботисключенияметоду,которыйвызвалэтотметод,

 

необходвсигнатуреметодасделатьпометом,чэтотметодкуможет

 

броисключениеить.

Например,

 

public void test() throws IOException {

 

// тутнахк,одкотитсяможетвызватьрый

IOException

}

 

 

В Java естьдостатбольшоеколичествочноисключений,ноих,какправило,

 

нехватает.Ничнемешреоасвоелетисключениезоватьунаследовать

 

егоот Exception.

 

 

22

Разработкаприложенийсграфическиминтерфейсом

ПерваяверсияязыкаJava

содержалабиблиоте

куклассов Abstract Window

Toolkit (AWT),предосновныетасредствапрограммированияляющую

графичинтнаконкретнрфейсаскогоплатф( ормей

Windows, Macintosh…)

Позднеепоявился

Swing,которыйнеявляетсяполнойзаменойAWT (

взяты

некоторархитеосновы

ктуры). Swing содержитболеебогаудобный

наборэлементов

пользовательскогоинтерфейса.

Swing менеезависимот

платформы,накоторвыполняетсяприложенией.Такжеэтабиблиотека

 

обеспечиваетоднотипсредствадляработынразныхыеплатформах.В

 

посвойствеледнкроиндом.Т.к.нативныеокярешения,к

 

которымпривыкпользовательопределен

ноперационнойсистемы,могут

выглядиначприложении,реализованномть спомощью

Swing.

Фреймы

Фрейм – окноверхнегоуровнят..( ,кононетороесодержитсявнутри

 

другогоокна)В.библиотекеSwing

онпредставленклассом

JFrame.

Посмотримнапример

ростоприложения,котс проспустоездаетрое

 

окно.

 

 

public class Test {

 

 

public static void main(String[] args) { MyFrame frame = new MyFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);

}

}

public class MyFrame extends JFrame { public MyFrame() {

setSize(300, 200);

}}

23

Послезапусканаэкранедолжноотобразитьсяпустоеокноразмерами300

на200.

Разберемподробнеенекотстр. рыеки frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Задаетдействиенажатиекр« (закрытиястикаокна)»По.

-умолчанию

действиепонажатиюкрестик« »делает

фрейм простоневидимым.Для

того,чтобывыходитьизпрограммынужнопрописать

 

JFrame.EXIT_ON_CLOSE.

По-умолчаниюфрейм

создаетсяневидимым,поэтпослемуздания

необходимоемууказатьвидимость.

 

frame.setVisible(true)

 

Подробнеесовсемимет дамиступнымдляфреймаожнознакомиться тут.

http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html

Java 2D

Итак,всеклассыотвечающзаотрисразлоконивкукомпонентовчный

графическихприложнаслотклассанияхдуются java.awt.Component http://docs.oracle.com/javase/8/docs/api/java/awt/Component.html.Но сейчас остановимсяподробнеенаегочернемклассе javax.swing.JComponent http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html.От данаследуюноговсекомпоненрасположены, тсябырыегутьна фрейме.

Вклассе javax.swing.Component естьметод protected void printComponent(Graphics g)

http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#printCom ponent-java.awt.Graphics-

Данныйметодвсегдавызываетприотрисовкекомпон.Разбентарем подробнеекакпроисходитотрисовкомпоне,аименкарабнсоттать

24

классом Graphics.

 

 

(http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html)

 

Начинаясверсии1классе.0,

 

Graphics имелисьметодыдлярисования

 

линий,прямоуголь,эллипсовт.д.Нофунбыликовкционвесьмал

 

 

ограничен.Невозмбылодажеизменитьширинжо

улиний.

 

Вверсии1появи.2библиотекаась

Javaсболеемощным2Dфункционалом.

 

Длятого,чтобывоспользвозмJavaожностямивать

2D, необходимо

создатьобъекткласса

Graphics2D, которыйявляетсяподклассом

Graphics.

public void paintComponent(Graphics g) {

 

Graphics2D g2 = (Graphics2D) g;

 

}

 

 

 

Присозданиигеометрическихфвбиблиотекегур

Java 2D применяется

объектно-ориентирподх.Всефигурыонаследуютсяванныйотинтерфейса

 

Shape. Например,такиеклассы,как

Line2D, Rectangle2D, Ellipse2D.

Подробнеес

овсемиклассамиожнознакомитьсяв фициальной

 

документации http://docs.oracle.com/javase/8/docs/api/java/awt/Shape.html.

Далеебудетприведенпримерработысэтимиклассами. import java.awt.*;

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

/**

*@version 1.32 2007-04-14

*@author Cay Horstmann */

public class DrawTest

{

public static void main(String[] args)

{

EventQueue.invokeLater(new Runnable()

25

{

public void run()

{

DrawFrame frame = new DrawFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);

}

});

}

}

/**

* A frame that contains a panel with drawings */

class DrawFrame extends JFrame

{

public DrawFrame()

{

setTitle("DrawTest");

setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

// add panel to frame

DrawComponent component = new DrawComponent(); add(component);

}

public static final int DEFAULT_WIDTH = 400; public static final int DEFAULT_HEIGHT = 400;

}

26

/**

* A component that displays rectangles and ellipses. */

class DrawComponent extends JComponent

{

public void paintComponent(Graphics g)

{

Graphics2D g2 = (Graphics2D) g;

// draw a rectangle

double leftX = 100; double topY = 100; double width = 200; double height = 150;

Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height); g2.draw(rect);

// draw the enclosed ellipse

Ellipse2D ellipse = new Ellipse2D.Double(); ellipse.setFrame(rect);

g2.draw(ellipse);

// draw a diagonal line

g2.draw(new Line2D.Double(leftX, topY, leftX + width, topY + height));

27

// draw a circle with the same center

double centerX = rect.getCenterX(); double centerY = rect.getCenterY(); double radius = 150;

Ellipse2D circle = new Ellipse2D.Double(); circle.setFrameFromCenter(centerX, centerY, centerX + radius, centerY +

radius);

g2.draw(circle);

}

}

ОснкомпонентывныеSwing

Рассмотримвсеоснк вныемпоненты,котд ступнырыев Swing.

Начнемскомпонентзволяют,кот рыевводиредактироватьтекст. JTextField(http://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html)

– позволяетоднострочныйвводтекста, JTextArea

(http://docs.oracle.com/javase/8/docs/api/javax/swing/JTextArea.html) –

позввмногострочноголяетдтекстаи JPasswordField

(http://docs.oracle.com/javase/8/docs/api/javax/swing/JPasswordField.html) – для

однострочноговводатекста,приэтом,содержимоенеотображается.

 

Дляотображеннередактданных(лейблови)руемыхяможно

 

воспользкомповатьсянентом

JLabel

(http://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html).

КнопреалвклассеизованыJButton (http://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html).

Примервсехкомпонент можнонайтивпапке components_1.

28

Компоновка элементов

Длярасполэлеменаожениикиспторазличныевльзуютсядиспетчеры

 

компоновки(

layout manager)Стандартным. диспетчеромкомпоновки

 

является flow layout manager. Вседобавляэлембудуемыент

добавляться

слеванапр,есэволинеементпомещавс ,торонекуреноситсяна

 

следующуюстроку.

 

 

Border layout (http://docs.oracle.com/javase/8/docs/api/java/awt/BorderLayout.html) -

позволяет распкомлагатьспривязкойонентыобластям.При

 

добавлениикомпнеобходимоуказатьнентыоднуизконстант.

SOUTH

(южная), NORTH (северная), WEST (западная), EAST (восточная)или

CENTER (центральная). Примерможнопосмотретьв

components_2.

Grid layout (http://docs.oracle.com/javase/8/docs/api/java/awt/GridLayout.html) -

размещаеткомпонентыстрокамистолбцам,каквтаблице.

Компонендобавляютсяпострочно,сначалаы

 

– впе рвуюячейку

первойстроки,затем

– вовторуюячейкупервойстроки.д.

Пример

можнопосмотретьв

components_3.

 

Всуществуетегобольшоеколичедругихдискомпонтвопетчеро,болеевки

того,выможетереализоватьсв бственный.

Обрасобытийка

Каждая операционнподдерживающаясреда, гр фическийинтерфе, с

 

непрерывноотслеживтакиесобытия,какнажатиеклаветилщелчокш

 

 

мыши,азатемсоонихбщаютвыполняемойпрог.Пррешаетаммеограмма,

 

 

какреагированаэтисобытия. ь

 

 

ТаккакJava

являетсяполнос

тьюобъектно

-ориентязык,тоированным

иерарвсобытхначинаетиясодногоклассаяя

 

java.util.EventObject

(http://docs.oracle.com/javase/8/docs/api/java/util/EventObject.html). Например,

кнопкаможетсоздаватьобъектыкласса

 

ActionEvent

29

(http://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html),а

окно WindowEvent (http://docs.oracle.com/javase/8/docs/api/java/awt/event/WindowEvent.html).

Краткомеханизмобрасоботкиытжнопследующимйсатьобразом.

Объект – слушательпредставсобойэкземпляр,ассаяет

 

 

реализующегоспециальныйинтерфейс,называинтерфейсомый

м

 

слушателя.

 

 

Истобытиячник

– этообъект,котможетрегистрироватьрый

 

 

слушатеипосыимобъектылсобытийейать.

 

 

• Принаступлениисобытийистпосылаетчникобъексобытиявсем

 

 

зарегистрированнымслушателям.

 

Слушателииспользуютинформацию,инкапсулирован

нуювобъекте

 

события,длятого,чтобырешать,какреагироватьнаэтос .бытие

 

Примерможнопосмотретьв

components_4.

 

30

Соседние файлы в папке Заочники 2020-2021