»ç¿ëÀÚ interfaceÀÇ ±¸Çö(B15)»ç¿ëÀÚ interface¸¦ À§ÇÑ event, componetµîÀÇ class·Î ±¸¼ºµÈ Package

±×¸² 1 : Component±¸¼º
½ÇÁö·Î ȸéÀ» ±×¸®´Â ºÎºÐÀ» update method¿¡ ±¸ÇöÇϰí paintÇÔ¼ö´Â updateÇÔ¼ö¸¸ ºÎ¸£°Ô ÇÔÀ¸·Î½á system¿¡¼ ȸéÀ» ±×¸®´Â ºÎºÐ°ú »ç¿ëÀÚ°¡ repaint¸¦ »ç¿ëÇÏ¿© ȸéÀ» ±×¸®´Â ºÎºÐÀ» µ¿ÀϽà ÇÑ´Ù.
Windows95 ȯ°æ¿¡¼ GDI Resource¸¦ Free½ÃÄÑÁÙ ¹æ¹ýÀÌ ¾ø´Ù.
±×¸² 2
¿øÇÏ´Â event°¡ ¾Æ´Ò¶§´Â super classÀÇ handleEvent¸¦ ¼öÇàÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´Ù¸¥ evnet°¡ ¼öÇàµÇÁö ¾Ê´Â´Ù.
Âü°í : http://www.javasoft.com/books/Series/Tutorial/ui/layout/using.html
class¸¦ implement LayoutÇüÅ·Π¸¸µé°í LayoutManager¿¡ ÀÖ´Â 5°¡Áö method¸¦ ±¸ÇöÇØ ÁØ´Ù.
Container¿¡ component¸¦ addÇϱâÀü¿¡ setLayoutÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© Layoutmanager¸¦ ¼³Á¤ÇÑ´Ù.
SetSizeFrame frm = new SetSizeFrame(this, applet);
frm.tfWidth.setText(Integer.toString(dimension.width));
frm.tfHeight.setText(Integer.toString(dimension.height));
frm.tfComment.setText(comment);
frm.pack();
frm.show();
applet.disable();
/**
* A container class that can scroll area with scrollbar
*
* @version 1.0 03/24/96
* @author Kang, Dae Woong (namu@star.elim.net)
*/
class ScrollPanel extends Panel
{
/**
* The target panel that will be scrolled
*/
WorkPanel target;
/**
* Scrollbars that will be displayed in south, east.
*/
Scrollbar scbVertical, scbHorizontal;
/**
* Constructs a ScrollPanel with a WorkPanel
* @param target that will be scrolled
*/
public ScrollPanel(WorkPanel target)
{
this.target = target;
setLayout(new BorderLayout());
add("Center", target);
add("South", scbHorizontal = new Scrollbar(Scrollbar.HORIZONTAL,
0, 100, 0, 200));
add("East", scbVertical = new Scrollbar(Scrollbar.VERTICAL));
}
/**
* set Scrollbar values
*/
public void layout()
{
Dimension dm;
super.layout();
dm = target.size();
if (dm.height < target.dimension.height)
{
scbVertical.enable();
scbVertical.setValues(scbVertical.getValue(), dm.height, 0,
target.dimension.height);
}
else
{
scbVertical.disable();
}
if (dm.width < target.dimension.width)
{
scbHorizontal.enable();
scbHorizontal.setValues(scbHorizontal.getValue(), dm.width, 0,
target.dimension.width);
}
else
{
scbHorizontal.disable();
}
}
/**
* handle Scrollbar event
*/
public boolean handleEvent(Event e)
{
if (e.target == scbVertical || e.target == scbHorizontal)
{
Scrollbar scr = (Scrollbar) e.target;
int val = 0;
int tmp;
boolean isDefault = false;
switch (e.id)
{
case e.SCROLL_ABSOLUTE:
val = ((Integer)e.arg).intValue();
break;
case e.SCROLL_LINE_DOWN:
tmp = scr.getValue() + scr.getVisible()/10;
scr.setValue((tmp + scr.getVisible() >
scr.getMaximum()) ? scr.getMaximum()
- scr.getVisible() : tmp);
val = scr.getValue();
break;
case e.SCROLL_LINE_UP:
scr.setValue(scr.getValue() - scr.getVisible()/10);
val = scr.getValue();
break;
case e.SCROLL_PAGE_DOWN:
tmp = scr.getValue() + scr.getVisible();
scr.setValue((tmp + scr.getVisible() >
scr.getMaximum()) ?
scr.getMaximum() - scr.getVisible() : tmp);
val = scr.getValue();
break;
case e.SCROLL_PAGE_UP:
scr.setValue(scr.getValue() - scr.getVisible());
val = scr.getValue();
break;
default:
isDefault = true;
}
if (!isDefault)
{
if (e.target == scbVertical)
target.ptScroll.y = val;
else
target.ptScroll.x = val;
target.repaint();
return true;
}
}
return super.handleEvent(e);
}
}
/**
* A class where draw the drawing
*
* @version 1.0 03/24/96
* @author Kang, Dae Woong (namu@star.elim.net)
*/
class WorkPanel extends Panel
{
Point ptScroll = new Point(0, 0);
Dimension dm = size();
public boolean handleEvent(Event e)
{
e.translate(ptScroll.x, ptScroll.y);
return super.handleEvent(e);
}
public void paint(Graphics g)
{
update(g);
}
public void update(Graphics g)
{
Rectangle clipRect;
g.clipRect(0, 0, dimension.width, dimension.height);
clipRect = g.getClipRect();
clipRect.translate(ptScroll.x, ptScroll.y);
offGraphics.translate(-ptScroll.x, -ptScroll.y);
offGraphics.setColor(getBackground());
offGraphics.fillRect(clipRect.x, clipRect.y, clipRect.width,
clipRect.height);
....
}
.....
}