Главная страница

Презентация по Программированию. Книга Программирование на Java для начинающих


Скачать 4.47 Mb.
НазваниеКнига Программирование на Java для начинающих
АнкорПрезентация по Программированию
Дата03.02.2022
Размер4.47 Mb.
Формат файлаpdf
Имя файла638767.pdf
ТипКнига
#350143
страница14 из 18
1   ...   10   11   12   13   14   15   16   17   18
ImageIcon соот- ветствующие графические ресурсы должны быть загружены при по- мощи объекта ClassLoader.
Имя файла или его путь указывается методу getResource() объекта
ClassLoader
, и в результате будет возвращаться адрес URL, который можно будет использовать в качестве аргумента для конструктора
ImageIcon
. Для этого в пакете java.net существует полезный класс URL, которому можно все это присвоить.
6. Перед конструктором
Buttons()
создайте объект ClassLoader.
ClassLoader ldr = this.getClass().getClassLoader() ;
7. Загрузите адреса ресурсов (файлов изображений).
java.net.URL tickURL = ldr.getResource( "tick.png" ) ;
java.net.URL crossURL = ldr.getResource( "cross.png" ) ;
8. Отредактируйте конструкторы
ImageIcon()
, описанные на шаге 2, чтобы использовать адреса URL.
ImageIcon tick = new ImageIcon( tickURL ) ;
ImageIcon cross = new ImageIcon( crossURL ) ;
9. Сохраните изменения, затем скомпилируйте и перезапустите про- грамму на выполнение. Результат будет такой же, но теперь про- грамму можно будет распространять в файле JAR.
Совет
Подробнее о том, как соз- давать Java-архивы (JAR ) см. в главе 10.
Совет
Обратите внимание, что для ссылки на объект класса ис- пользуется метод getClass() и ключевое слово this.

8. Пос
троение инт
ерфейс
ов
140
Добавление меток
На графический интерфейс можно добавлять элемент «метка » при по- мощи класса JLabel. Данный элемент используется для отображения неизменяемого пользователем текста или изображения или и того и другого.
Объект JLabel создается при помощи ключевого слова new, и его кон- структор принимает строковый аргумент, указывающий текст для ото- бражения на метке, или имя объекта ImageIcon, представляющего изо- бражение для отображения. Он может также принимать три аргумента, определяющие текст, изображение и величину горизонтальной при- вязки в виде константы объекта JLabel. Например, JLabel( "text",
img, JLabel.CENTER )
осуществляет привязку по центру.
В случае если объект JLabel содержит текст и изображение, то отно- сительное положение текста можно определять при помощи указания константы JLabel в качестве аргумента методам setVerticalPosition() и setHorizontalPosition() объекта JLabel.
Существует дополнительный элемент ToolTip — всплывающая под- сказка , которая появляется при наведении курсора мыши на объект.
Ее можно создавать при помощи метода setToolTipText(), указав ему в качестве аргумента строку текста с подсказкой.
1. Отредактируйте копию файла Window.java, заменив имя класса
Window
в объявлении, конструкторе и экземпляре на Labels.
2. Перед конструктором
Labels()
создайте объект ImageIcon для изо- бражения.
ImageIcon duke = new ImageIcon( "duke.png" ) ;
3. Затем создайте три объекта JLabel: первый для вывода изображе- ния, второй для вывода текста, а третий — и для того, и для дру- гого.
JLabel lbl1 = new JLabel( duke ) ;
JLabel lbl2 = new JLabel( "Дюк — талисман технологии Java." ) ;
JLabel lbl3 = new JLabel( "Дюк" , duke , JLabel.CENTER ) ;
4. Внутри конструктора
Labels()
добавьте следующий оператор, соз- дающий подсказку для первой метки.
lbl1.setToolTipText( "Дюк — талисман Java" ) ;
JAVA
Labels.java

141
5. После третьей метки напишите два оператора для привязки текста по центру и внизу.
lbl3.setHorizontalTextPosition( JLabel.CENTER ) ;
lbl3.setVerticalTextPosition( JLabel.BOTTOM ) ;
6. Теперь допишите три оператора для добавления компонентов
JLabel
на контейнер JPanel.
pnl.add( lbl1 ) ;
pnl.add( lbl2 ) ;
pnl.add( lbl3 ) ;
7. Сохраните программу под именем Labels.java, затем скомпилируй- те и запустите, поместив указатель мыши над первой меткой.
В случае если вы намерены распространять программу в одиночном
Java-архиве, перед созданием объекта ImageIcon графические ресурсы должны быть загружены при помощи объекта ClassLoader.
Методу getResource() объекта ClassLoader нужно указать имя файла или путь к нему, а метод вернет адрес URL, который можно использо- вать в качестве аргумента для конструктора ImageIcon.
8. Перед конструктором
Labels()
создайте объект ClassLoader.
ClassLoader ldr = this.getClass().getClassLoader() ;
9. Отредактируйте конструктор ImageIcon(), представленный на шаге 2, для того чтобы загрузить адрес URL файла ресурса, исполь- зуя объект ClassLoader.
ImageIcon duke =
new ImageIcon( ldr.getResource( "duke.png" ) ) ;
10. Сохраните изменения, затем заново скомпилируйте и запустите программу. Теперь ее можно распространять в файле JAR.
На заметку
Константы для привязки к компонентам JLabel вклю- чают LEFT, CENTER, RIGHT, TOP и BOTTOM.
Совет
Подробнее о создании Java- архива (JAR) см. в главе 10.

8. Пос
троение инт
ерфейс
ов
142
Добавление текстовых
полей
В библиотеке Swing существует класс JTextField, который создает компонент графического интерфейса, представляющий собой одно- строчное текстовое поле . Данный компонент позволяет отобразить на экране редактируемый текст, с помощью которого пользователь может взаимодействовать с программой.
Объект JTextField создается при помощи ключевого слова new, и его конструктор может принимать строковый аргумент, задающий текст по умолчанию, который будет отображаться в этом поле. В этом случае размер компонента будет подогнан в соответствии с длиной указанной строки. В качестве альтернативного варианта аргументом может быть числовое значение, определяющее размер текстового поля. Конструк- тор может также принимать и оба аргумента одновременно — для тек- ста по умолчанию и для размера текстового поля.
При помощи класса JTextArea можно создавать многострочные тек- стовые поля. Конструктор данного класса принимает два числовых аргумента, определяющих число строк и ширину поля. Альтернатив- ным вариантом является указание трех аргументов, задающих текст по умолчанию, а также число строк и ширину. При помощи методов
setLineWrap()
и setWrapStyleWord() объекта JTextArea можно управ- лять переносом слов, подгоняя тем самым ширину вводимого текста под размер поля.
Если текст, введенный в компонент JTextArea, превышает его первона- чальный размер, компонент будет растягиваться. Можно задать ком- поненту фиксированный размер с возможностью скроллинга. Для это- го его нужно поместить в контейнер JScrollPane. Это можно сделать при помощи ключевого слова new с использованием имени объекта
JTextArea
как аргумента.
По умолчанию полоса прокрутки (ScrollBar) будет появляться, когда поле содержит текст, превышающий его размер. Но можно сделать так, чтобы полоса прокрутки включалась постоянно. Для этого нужно ука- зать константу контейнера JScrollPane в качестве аргумента методам
setVerticalScrollBarPolicy()
или setHorizontalScrollBarPolicy().
Например, для того, чтобы всегда отображать вертикальную полосу прокрутки, используйте константу JScrollPane.VERTICAL_SCROLLBAR_
ALWAYS
в качестве аргумента.
Совет
В тех случаях, когда вам нуж- но скрыть вводимые поль- зователем символы, вместо класса JTextField исполь- зуйте класс JPasswordField.

143
1. Отредактируйте копию файла Window.java, заменив имя класса
Window
в объявлении, конструкторе и экземпляре на TextFields.
2. Перед конструктором TextFields() создайте два объекта
JTextField
JTextField txt1 = new JTextField( 38 ) ;
JTextField
txt2 = new JTextField( "Текст по умолчанию" , 38 ) ;
3. Создайте объект
JTextArea
высотой в пять строк.
JTextArea txtArea = new JTextArea( 5 , 37 ) ;
4. Добавьте объект
JScrollPane
, который будет содержать объект
JTextArea
, созданный на предыдущем шаге.
JScrollPane pane = new JScrollPane( txtArea ) ;
5. В методе конструктора TextFields() добавьте операторы для вклю- чения опции переноса слов.
txtArea.setLineWrap( true ) ;
txtArea.setWrapStyleWord( true ) ;
6. Добавьте оператор для постоянного отображения вертикальной полосы прокрутки для объекта JTextArea.
pane.setVerticalScrollBarPolicy
( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS ) ;
7. Допишите два оператора для добавления компонентов JTextField на контейнер JPanel.
pnl.add( txt1 ) ;
pnl.add( txt2 ) ;
8. Вставьте еще один оператор для добавления контейнера JScroll-
Pane
(содержащего поле JTextArea) в контейнер JPanel.
pnl.add( pane ) ;
9. Сохраните программу под именем TextFields.java, затем скомпили- руйте и запустите, вводя текст в текстовые поля.
JAVA
TextFields.java
Внимание
Компонент JTextArea не имеет возможности про- крутки до тех пор, пока его не поместить внутрь компо- нента JScrollPane.

8. Пос
троение инт
ерфейс
ов
144
Добавление элементов
выбора
В библиотеке Swing существует класс JCheckBox, при помощи которого создается компонент «флажок » (CheckBox). Его можно добавлять в гра- фический интерфейс, и этот компонент дает возможность выбирать либо отменять выбор отдельного элемента. Объект JCheckBox созда- ется при помощи ключевого слова new, и его конструктор принимает строковый аргумент, определяющий отображаемый рядом с флажком текст. Можно также указывать и второй аргумент, имеющий логиче- ское значение true — он делает флажок выбранным по умолчанию.
Класс JComboBox предлагает возможность создания выпадающего спи- ска элементов, из которого пользователь может выбрать единственный.
Данный объект также создается при помощи ключевого слова new, а его конструктор принимает имя строкового массива в качестве аргумента.
Каждый элемент этого массива соответствует элементу выбора выпа- дающего списка. Аналогичный список предлагается создать при помо- щи класса JList, который создает список фиксированного размера, и из него пользователь может выбирать один или более элементов. Объект
JList
создается при помощи ключевого слова new, а его конструктор принимает в качестве аргумента массив. Объекты JList и JComboBox являются наборами, поэтому они в своем объявлении должны содер- жать суффикс , определяющий общий тип данных, который может содержать этот набор.
1. Отредактируйте копию файла Window.java, заменив имя класса
Window
в объявлении, конструкторе и экземпляре на Items.
2. Перед конструктором
Items()
создайте строковый массив с эле- ментами, которые будет выбирать пользователь.
String[] toppings =
{ "Пеперони" , "Грибная" , "С ветчиной" , "Томатная" } ;
3. Теперь создайте четыре объекта JCheckBox, каждый из которых бу- дет представлять элемент массива для выбора. Для одного из них установите значение выбора по умолчанию.
JCheckBox chk1 = new JCheckBox( toppings[0] ) ;
JCheckBox chk2 = new JCheckBox( toppings[1] , true ) ;
JCheckBox chk3 = new JCheckBox( toppings[2] ) ;
JCheckBox chk4 = new JCheckBox( toppings[3] ) ;
JAVA
Items.java

145
4. Добавьте строковый массив с элементами для выбора.
String[] styles =
{ "В глубокой форме" , "Для гурманов" , "Тонкая" } ;
5. Создайте объект
JComboBox
для отображения элементов второго массива, предлагающихся к выбору.
JComboBox box1 =
new JComboBox( styles ) ;
6. Добавьте объект
JList
для отображения элементов первого масси- ва, предлагающихся к выбору.
JList lst1 = new JList( toppings ) ;
7. В методе конструктора Items() добавьте операторы, помещающие каждый из компонентов JCheckBox в контейнер JPanel.
pnl.add( chk1 ) ;
pnl.add( chk2 ) ;
pnl.add( chk3 ) ;
pnl.add( chk4 ) ;
8. Добавьте операторы, которые устанавливают выбор элемента по умолчанию, а затем помещают компонент JComboBox в контейнер
JPanel
box1.setSelectedIndex( 0 ) ;
pnl.add( box1 ) ;
9. Теперь добавьте оператор для помещения компонента JList на контейнер JPanel.
pnl.add( lst1 ) ;
10. Сохраните программу под именем Items.java, затем скомпилируйте и запустите, выбирая элементы из списков.
На заметку
Если в компоненте JComboBox может быть выбран только один элемент, то в JList — несколько.
Совет
Подробнее о том, как созда- вать методы для обработки событий, реагирующие на действия пользователя, такие как выбор элементов списка, будет описано в сле- дующей главе.

8. Пос
троение инт
ерфейс
ов
146
Добавление
переключателей
В библиотеке Swing существует класс JRadioButton, который исполь- зуется для создания такого компонента графического интерфейса, как
«переключатель». Он может быть использован для выбора пользовате- лем одного элемента из группы таких переключателей.
Объект JRadioButton создается при помощи ключевого слова new, а его конструктор принимает строковый аргумент, определяющий текст, отображаемый рядом с переключателем. Конструктор может также принимать и второй аргумент логического типа, имеющий значение
true
, который определяет, что соответствующий переключатель вы- бран по умолчанию.
Переключатели логически объединяются в группу при помощи объек- та ButtonGroup, и из этой группы может быть выбран одновременно только один из них. Переключатель добавляется в объект ButtonGroup при помощи его метода add() указанием имени данного переключателя в качестве аргумента этому методу.
1. Отредактируйте копию файла Window.java, заменив имя класса
Window
в объявлении, конструкторе и экземпляре на Radios.
2. Перед конструктором
Radios()
создайте три объекта JRadioButton, один из которых сделайте выбранным по умолчанию.
JRadioButton rad1 = new JRadioButton( "Красное" , true ) ;
JRadioButton rad2 = new JRadioButton( "Розовое" ) ;
JRadioButton rad3 = new JRadioButton( "Белое" ) ;
3. Затем создайте объект ButtonGroup, при помощи которого сгруп- пируйте переключатели.
ButtonGroup wines = new ButtonGroup() ;
4. В методе конструктора Radios() вставьте операторы для добавле- ния компонентов JRadioButton в группу JButtonGroup.
wines.add( rad1 ) ;
wines.add( rad2 ) ;
wines.add( rad3 ) ;
JAVA
Radios.java
На заметку
Кнопки группируются в объект ButtonGroup не физически, а логически.

147
5. Вставьте операторы для добавления компонентов JRadioButton в контейнер JPanel.
pnl.add( rad1 ) ;
pnl.add( rad2 ) ;
pnl.add( rad3 ) ;
6. Сохраните программу под именем Radios.java, затем скомпилируй- те и запустите, выбрав любую из кнопок.
Примеры выше демонстрировали наиболее общие компонен- ты библиотеки Swing — JButton, JLabel, JTextField, JCheckBox,
JComboBox
, JList и JRadioButton. В пакете javax.swing содержатся и другие, более специфичные компоненты, чье подробное описа- ние можно найти в документации по Java. Например, компоненты
JSlider
, JProgressBar и JMenuBar, представленные на рисунках ниже.
Совет
Подробнее о создании методов обработки событий, реагирующих на действия пользователя — в следую- щей главе.
Совет
Попробуйте, используя доку- ментацию, добавить компо- нент JSlider в программу
Radios. Как использовать документацию — см. главу 5.

8. Пос
троение инт
ерфейс
ов
148
Изменение внешнего вида
интерфейса
Пакет java.awt (Abstract Window Toolkit) содержит классы для «рисо- вания», которые вы можете использовать для «украшения» внешнего вида компонентов интерфейса. Этот пакет можно сделать доступным в программе, включив начальный оператор import java.awt.* ;.
Внутри пакета java.awt содержится класс Color, в котором имеются константы, представляющие несколько базовых цветов, такие, как, на- пример, Color.RED. При помощи ключевого слова new можно создавать экземпляры класса Color, которые будут представлять пользователь- ские цвета. Конструктор может принимать три целочисленных аргу- мента, значения которых лежат в диапазоне от 0 до 255. Эти аргументы будут представлять компоненты RGB (красный, зеленый, синий), фор- мирующие пользовательский цвет.
Любой компонент интерфейса содержит методы setBackground() и setForeground(), которые в качестве своего аргумента принимают объект Color, чтобы раскрасить компонент указанным цветом.
Обратите внимание, что фон заднего плана (background) компонентов
JLabel
по умолчанию всегда прозрачен, поэтому, перед тем как изме- нять цвета компонентов, нужно установить значение непрозрачности в true при помощи метода
1   ...   10   11   12   13   14   15   16   17   18


написать администратору сайта