Что такое Java Операции присваивания Массивы Java-файлы Работа с массивами Классы-адаптеры Изображение и звук Анимация Подпроцессы-демоны Печать в Java Работа по протоколу TCP Сервлеты Java на сервере Методы улучшения визуализации

Простота изучения

Язык Java, хотя и более сложный чем языки командных интерпретаторов, все же неизмеримо проще для изучения, чем другие другие языки программирования, например C++. Черты языка станут казаться вам естественным путем для решения тех или иных задач и будут способствовать отработке хорошего стиля программирования. Поскольку объектная модель в Java одновременно проста и выразительна, вы скоро освоитесь с объектно-ориентированным стилем создания программ.

Обработка действий мыши

Событие MouseEvent возникает в компоненте по любой из семи причин: 

Для их обработки есть семь методов в двух интерфейсах:

public interface MouseListener extends EventListener{

public void mouseClicked(MouseEvent e);

public void mousePressed(MouseEvent e) ;

public void mouseReleased(MouseEvent e);

public void mouseEntered(MouseEvent e);

public void mouseExited(MouseEvent e); 

public interface MouseMotionListener extends EventListener{

public void mouseDragged(MouseEvent e);

public void mouseMoved(MouseEvent e); 

}

Эти методы могут получить от аргумента е координаты курсора мыши в системе координат компонента методами e.getxo, e.getvo, или одним методом e.getPointo, возвращающим экземпляр класса Point.

Двойной щелчок кнопкой мыши можно отследить методом e.getciickcount(), возвращающим количество щелчков. При перемещении мыши возвращается 0.

Узнать, какая кнопка была нажата, можно с помощью метода e.getModifiers() класса inputEvent сравнением со следующими статическими константами класса inputEvent:

Приведем пример, уже ставший классическим. В листинге 12.4 представлен простейший вариант "рисовалки" — класс scribble. При нажатии первой кнопки мыши методом mousePressed () запоминаются координаты курсора мыши. При протаскивании мыши вычерчиваются отрезки прямых между текущим и предыдущим положением курсора мыши методом mouseDragged(). На рис. 12.3 показан пример работы с этой программой.

Листинг 12.4. Простейшая программа рисования 

import j ava.awt.*; 

import j ava.awt.event.*;

public class ScribbleTest extends Frame{ 

public ScribbleTest(String s){ 

super(s);

ScrollPane pane = new ScrollPane();

pane.setSize(300, 300);

add(pane, BorderLayout.CENTER);

Scribble scr = new Scribble(this, 500, 500); 

pane.add(scr);

Panel p = new Panel 0; 

add(p, BorderLayout.SOUTH);

Button bl = new Button("Красный"); 

p.add(bl);

bl.addActionListener(scr);

Button b2 = new Button("Зеленый"); 

p.add(b2);

b2.addActionListener(scr) ;

Button b3 = new Button("Синий"); 

p.add(b3);

b3.addActionListener(scr) ;

Button b4 = new Button("Черный"); 

p.add(b4);

b4.addActionListener(scr);

Button b5 = new Button("Очистить"); 

p.add(bS);

b5.addActionListener(scr);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e){ 

System.exit(0);

});

pack();

setvisible(true); 

}

public static void main(String[] args){ 

new ScribbleTest(" \"Рисовалка\"");

}

}

class Scribble extends Component implements ActionListener, MouseListener, MouseMotionListener{ 

protected int lastX, lastY, w, h; 

protected Color currColor = Color.black; 

protected Frame f;

public Scribble(Frame frame, int width, int height){

f = frame; 

w = width; 

h = height;

enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);

addMouseListener(this);

addMouseMotionListener(this); } 

public Dimension getPreferredSize(){

return new Dimension(w, h); } 

public void actionPerformed(ActionEvent event){

String s = event.getActionCommand();

if (s.equals ("Очистить")) repaint();

else if (s.equals ("Красный")) currColor = CofLor.red;

else if (s.equals("Зеленый")) currColor = Coior.green;

else if (s.equals("Синий")) currColor = Color.blue;

else if (s.equals("Черный")) currColor = Color.black; } 

public void mousePressed(MouseEvent e){

if ( (e.getModifiers() & MouseEvent.BUTTON 1__MASK) = 0) return;

lastX = e.getXO; lastY = e.getYO; } 

public void mouseDragged(MouseEvent e){

if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) = 0) return;

Graphics g = getGraphics();

g.setColor(currColor);

g.drawLinedastX, lastY, e.getX(), e.getY());

lastX = e.getX(); lastY = e.getY(); }

public void mouseReleased(MouseEvent e){} 

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e){} 

public void mouseExited(MouseEvent e){} 

public void mouseMoved(MouseEvent e){} 

}

Рис. 12.3. Пример работы  с программой рисования

При создании класса-слушателя scribble и реализации интерфейсов MouseListener и MouseMotionListener пришлось реализовать все их семь ме-тодов, хотя мы отслеживали только нажатие и перемещение мыши, и нам нужны были только методы mousePressed () и mouseDragged (). Для остальных методов мы задали пустые реализации.

Чтобы облегчить задачу реализации интерфейсов, имеющих более одного метода, созданы классы-адаптеры.

Нотон, хотя и не рассчитывал на то, что кто-то обратит внимание на его письмо, все же изложил свои претензии, беспощадно раскритиковав недостатки Sun Microsystems, в частности, разрабатываемую в тот момент архитектуру ПО NeWS. К удивлению Нотона, его письмо возымело успех: оно было разослано всем ведущим инженерам Sun Microsystems, которые не замедлили откликнуться и высказать горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя (Bill Joy), основателя Sun Microsystems, и Джеймса Гослинга (James Gosling), начальника Нотона.

В тот день, когда Нотон должен был уйти из компании, было принято решение о создании команды ведущих разработчиков с тем, чтобы они делали что угодно, но создали нечто необыкновенное. Команда из шести человек приступила к разработке нового объектно-ориентированного языка программирования, который был назван Oak (дуб), в честь дерева, росшего под окном Гослинга.


Warning: require_once() [function.require-once]: Filename cannot be empty in /pub/home/andrekon21/obuvoptom96/authority7.php on line 5

Fatal error: require_once() [function.require]: Failed opening required '' (include_path='.:/usr/local/php5.2/share/pear') in /pub/home/andrekon21/obuvoptom96/authority7.php on line 5