Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_5.doc
Скачиваний:
10
Добавлен:
05.06.2015
Размер:
2.28 Mб
Скачать

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

import java.awt.event.MouseListener;

import java.awt.event.MouseEvent;

import java.applet.Applet;

import java.awt.Graphics;

// Нет необходимости наследоватьот JApplet, т.к. компоненты не добавляются —

// проиcходит просто отрисовка

public class SimpleClick extends Applet

implements MouseListener {

StringBuffer buffer;

public void init() {

addMouseListener(this);

buffer = new StringBuffer();

addItem("initializing... ");

}

public void start() {

addItem("starting... ");

}

public void stop() {

addItem("stopping... ");

}

public void destroy() {

addItem("preparing for unloading...");

}

void addItem(String newWord) {

System.out.println(newWord);

buffer.append(newWord);

repaint();

}

public void paint(Graphics g) {

// Рисуем прямоугольник

g.drawRect(0, 0,

getWidth() - 1,

getHeight() - 1);

// Отрисовываем строчку внутри прямоугольника

g.drawString(buffer.toString(), 5, 15);

}

// Следующая группы пустых методов может быть удалена в случае реализации

// MouseAdapter

public void mouseEntered(MouseEvent event) {

}

public void mouseExited(MouseEvent event) {

}

public void mousePressed(MouseEvent event) {

}

public void mouseReleased(MouseEvent event) {

}

public void mouseClicked(MouseEvent event) {

addItem("click!... ");

}

}

Как видно, нет никаких разительных отличий обработки событий от обычных приложений. При нажатии кнопкой мыши, появиться надпись «click!... ».

Ui-компоненты

  • Buttons (javax.swing.JButton)

  • Checkboxes (javax.swing.JCheckBox)

  • Single-line text fields (javax.swing.JTextField)

  • Larger text display and editing areas (javax.swing.JTextArea)

  • Labels (javax.swing.JLabel)

  • Lists (javax.swing.JList)

  • Pop-ups (javax.swing.Popup)

  • Scrollbars (javax.swing.JScrollBar)

  • Sliders (javax.swing.JSlider)

  • Drawing areas (java.awt.Canvas)

  • Menus (javax.swing.JMenu,javax.swing.JMenuBar javax.swing.JMenuItem, javax.swing.JCheckBoxMenuItem)

  • Containers (javax.swing.JPanel, javax.swing.JWindow and its subclasses)

Методы для работы с ui-компонентами

  • add — Добавляет указанный как параметр компонент

  • remove — Удаляет указанный как параметр компонент

  • setLayout — Устанавливает режим верстки

Пример работы с ui-компонентом

Расширим предыдущий пример текстбоксом, в который нельзя вводить какие-либо данные (свойство setEditible(false)):

import javax.swing.JApplet;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

// Нет необходимости наследоватьот JApplet, т.к. компоненты не добавляются —

// проиcходит просто отрисовка. При этом стоит следить за тем, чтобы

// обращаться только к компонентам в потоке-обработчике события.

public class ScrollingSimple extends JApplet {

JTextField field;

public void init() {

//Execute a job on the event-dispatching thread:

//creating this applet's GUI.

try {

SwingUtilities.invokeAndWait(new Runnable() {

public void run() {

createGUI();

}

});

} catch (Exception e) {

System.err.println("createGUI didn't successfully complete");

}

addItem(false, "initializing... ");

}

private void createGUI() {

// Создаем текстовое поле без возможности редактирования

field = new JTextField();

field.setEditable(false);

// Текстовое поле должно занимать максимальную ширину

setLayout(new java.awt.GridLayout(1,0));

// Добавляем текствое поле на апплет

add(field);

}

public void start() {

addItem(false, "starting... ");

}

public void stop() {

addItem(false, "stopping... ");

}

public void destroy() {

addItem(false, "preparing for unloading...");

cleanUp();

}

private void cleanUp() {

// Удаляем текстовое поле с апплета

try {

SwingUtilities.invokeAndWait(new Runnable() {

public void run() {

remove(field);

}

});

} catch (Exception e) {

System.err.println("cleanUp didn't successfully complete");

}

field = null;

}

private void addItem(boolean alreadyInEDT, String newWord) {

if (alreadyInEDT) {

addItem(newWord);

} else {

final String word = newWord;

//Execute a job on the event-dispatching thread:

//invoking addItem(newWord).

try {

SwingUtilities.invokeAndWait(new Runnable() {

public void run() {

addItem(word);

}

});

} catch (Exception e) {

System.err.println("addItem didn't successfully complete");

}

}

}

// Этот метод должен вызываться ТОЛЬКО из потока-обработчика события

private void addItem(String newWord) {

String t = field.getText();

System.out.println(newWord);

field.setText(t + newWord);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]