Java -практика использования



             

Листинг 13 2 Программа рисования с всплывающим меню



Листинг 13.2. Программа рисования с всплывающим меню

import j ava.awt.* ;

import j ava.awt.event.*;

public class PopupMenuScribble extends Frame{ 

public PopupMenuScribble(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);

addWindowListener(new WinClose()); 

pack ();

setVisible(true); 

class WinClose extends WindowAdapter{

public void windowClosing(WindowEvent e){

System.exit(0); 

public static void main(String[] args){

new PopupMenuScribble(" \"Рисовалка\" с всплывающим меню"); 

}

class ScriBble extends Component implements ActionListener{ 

protected int lastX, lastY, w, h; 

protected Color currColor = Color.black; 

protected Frame f;

protected PopupMenu c;

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

f = frame; w = width; h = height; 

enableEvents(AWTEvent.MOUSE_EVENT_MASK | 

        AWTEvent.MOUSEJtoTIONJEVENT_MASK);

с = new PopupMenu ("Цвет") ;

add(c);

Menultera clear = new Menultem("Очистить",

    new MenuShortcut(KeyEvent.VK_D)); 

Menultem red = new Menultem("Красный"); 

Menultem green = new Menultem("Зеленый"); 

Menultem blue = new Menultern("Синий"); 

Menultem black = new Menultem("Черный"); 

c.add(red); c.add(green); c.add(blue); 

c.add(black); с.addSeparator(); с.add(clear);

red.addActionListener(this); 

green.addActionListener(this); 

blue.addActionListener(this); 

black.addActionListener(this); 

clear.addActionListener(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 = Color.red;

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

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

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

}

public void processMouseEvent(MouseEvent e){ 

if (e.isPopupTrigger())

c.show(e.getComponent (), e.getXO, e.getY()); 

else if (e.getlDO == MouseEvent.MOUSE_PRESSED){

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

else super.processMouseEvent(e); }

public void processMouseMotionEvent(MouseEvent e){ 

if (e.getlDO = MouseEvent.MOUSE_DRAGGED){ 

Graphics g = getGraphics();

g.setColor(currColor) ;

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

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

}

else super.processMouseMotionEvent(e); 

}









Содержание  Назад  Вперед