Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание 1 часть_В1-В34.docx
Скачиваний:
1
Добавлен:
19.09.2019
Размер:
3.05 Mб
Скачать
  1. Отформатировать текст по стп мгупи. Оформить рисунки и программный кода

Поддержка надписями JLabel языка HTML возводит их в ранг универсального ин­формационного элемента, позволяющего вывести любой тип информации. Много­строчные надписи, различные шрифты и выравнивания, любые цвета, нумерованные и маркированные списки, изображения — все у вас в руках. Однако чересчур увлекать­ся возможностями HTML не стоит, потому что надписи должны сообщать пользовате­лю полезную информацию, а не отвлекать его внимание буйством красок. К тому же HTML-текст выводится на надписи в своеобразной форме, несколько отличающейся от того, что показало бы большинство браузеров, и все это может привести к визуальному конфликту между стилем используемого внешнего вида и некоторыми компонентами, поэтому необходимо точно знать, что вы хотите получить.

Надписи и события

Надпись JLabel — такой же компонент, как и остальные, унаследованный от базового класса JComponent, поэтому она может обрабатывать любые виды общих для всех ком­понентов событий: надо лишь добавить к ней соответствующих слушателей. Но чаще всего надпись просто сообщает что-то пользователю, а не обрабатывает событий, что­бы не вводить его в заблуждение (помните принцип простого интерфейса с очевидным предназначением). Пользователь привык, что надписи выводят информацию, и не от­вечают за что-то большее. Если вам нужно выполнять в приложении какую-то функцию, инициируйте ее выполнение с помощью кнопки или клавиатурного сокращения, в ка­честве альтернативы можно предложить компонент-гиперссылку JXHyperlink из пакета дополнений SwingX.

Надписи также не принимают фокус ввода, их свойство focusable по умолчанию уста­новлено в false. Если только вы не хотите огорошить пользователей новаторским интер­фейсом, в котором надписи живут своей жизнью, стандартное поведение вряд ли стоит менять.

Надписи и мнемоники

Создатели Swing добавили в надписи JLabel еще одну возможность, позволяющую от­точить функциональность вашего пользовательского интерфейса. Надписи могут под­держивать мнемоники (mnemonics) для других компонентов, неспособных поддержи­вать их самостоятельно. Мнемоника — это специальное клавиатурное сокращение (на большинстве платформ сочетание клавиши Alt или Ctrl с кодом клавиши), позволяющая быстро активировать некоторый компонент интерфейса, например, кнопку или тек­стовое поле. В сложных интерфейсах, состоящих из множества компонентов, находить нужный компонент (который, возможно, является самым важным) может быть утоми­тельно, и в таких ситуациях мнемоники очень полезны. Более того, они незаменимы для пользователей с ограниченными возможностями, которые не могут пользоваться мышью. Приложение высокого класса обязано предоставлять доступ с клавиатуры ко всем своим компонентам.

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

Поддержка мнемоник реализована в UI-представителе надписи JLabel, причем сдель­но все довольно интересно: когда вы сообщаете надписи, что хотели бы использовать ее для вывода мнемоники некоторого компонента, UI-представитель, во-первых, под­черкивает символ мнемоники при прорисовке надписи, во-вторых, регистрирует в кар­

те входных событий нужное клавиатурное сокращение. При срабатывании сокращения -^дпись на мгновение получает фокус ввода (фокус сохраняется на надписи, пока вы зерживаете клавиши), при отпускании клавиш фокус переходит к компоненту, для ко-

  • : эого была задана мнемоника, а затем надпись снова возвращается в обычное состоя­ние (без фокуса ввода). Давайте увидим все в действии:

// LabelMnemonic.java

// Использование надписей для вырода мнемоник importjavax.swing.*; importjava.awt.*;

(setLabelFor()), а также символ мнемоники, клавишу которого вместе с управляющей кла­вишей и нужно будет нажать (setDisplayedMnemonicO). Запустив пример, вы увидите, что надпись подсказывает пользователю, каким символом можно активизировать текстовое поле при нажатии нужного сочетания (чаще всего Alt+символ, в нашем случае Alt+И). Вте­кущих выпускахJDK 1.6 - 1.7 кириллические символы поддерживаются'1, что замечатель­но, так как в первом издании книги мы сломали немало копий по этому поводу.

Общая рекомендация для интерфейса говорит, что гсекомпоненты должны быть снаб­жены мнемониками, поэтому рассмотренная нами возможность несомненно полезна.

Всплывающие подсказки

Всплывающие подсказки (tool tips) — неизменный атрибут современного пользователь­ского интерфейса, и не зря: они намного упрощают ознакомление и последующую рабо­ту с вашим приложением. Это небольшие (чаще всего, хотя и не обязательно) текстовые описания компонентов вашего интерфейса, появляющиеся рядом с компонентом в том случае, если пользователь ненадолго задерживает на нем указатель мыши. Ценность всплывающих подсказок трудно переоценить — они намного ускоряют работу с любым, особенно сложным приложением. Вместо знакомства с документацией пользователь мо­жет прямо «на лету» узнать, для чего предназначен тот или иной элемент интерфейса, и быстро начать работу. Работу кнопками, на которых есть только значки, вообще невоз­можно представить без подсказок5. В Swing это особенно верно, потому что подсказк;: здесь обладают весьма широкими возможностями.

4 К сожалению, только для надписей, но не для кнопок и меню

5 Интересно, что кнопки с мелкими значками, так популярные в современных приложение от Web до мобильных устройств, часто подвергаются критике специалистов по удобству интерфей­сов. Действительно, и попасть трудно, и почитать надо перед тем как нажимать, универсальна”.значков мало. Автор согласен с тем, что если есть место для текста, лучше сделать элемент с те­стом, чем с красочным значком.

Любой компонент Swing может обладать всплывающей подсказкой, потому что под­держка их встроена в базовый класс библиотеки JComponent. Когда вы вызываете мето- setToolTipText(), компонент регистрирует себя в классе ToolTipManager, который отвечает за правильный вывод подсказок. Класс ToolTipManagerследит за перемещениями мыши на всех зарегистрированных в нем компонентах и при наступлении нужного момент! (наведении указателя мыши) выводит подсказку на экран. Рассмотрим пример с под­сказками:

// ToolTips.java // ПодсказкивSwing import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class ToolTips extends JFrame {

public ToolTips () (

super("ToolTips");

setDefaultCloseOperation(EXIT_ON_CLOSE);

// добавим несколько кнопок с подсказками

JButton Ы = newJButton("Один");

bl.setToolTipText("Это первая кнопка");

JButton Ь2 = new JButton() {

public Point getToolTipLocation(MouseEvent e) { return new Point{10, 10);

}

public String getToolTipText(MouseEvent e) { if ( e.getY() > 10 ) {

return "Нижняя часть кнопки!";

)

return super.getToolTipText(e);

}

} ;

b2.setText("Два");

b2.setToolTipText("<html><h3>3TO вторая кнопка.<ul>" +

"Она: <Ы>Ничего не делает<И>Но ее можно нажать!");

JPanel contents = new JPanelO; contents.add(bl); contents.add(b2);

// выводим окно на экран add(contents); setSize (400, 150); setVisible(true);

}

public static void main(String[] args) {

SwingUtilities.invokeLater( new Runnable(J { public void run() { new ToolTips(); } });

}

}

  1. Отформатировать таблицу по СТП МГУПИ

  1. Отформатировать текст по СТП МГУПИ, ввести формулы с помощью инструмента MSEquation

Вариант № 18