Оглавление |
Назад
// ==========================================
// CustomCheckBox.java
//(C) Alexandr Frolov, 1998
// E-mail: frolov@glasnet.ru
// Web: http://www.glasnet.ru/~frolov
// ==========================================
import java.applet.Applet;
import java.awt.*;
// ===========================================
// Class CustomCheckBox
// ===========================================
public class CustomCheckBox extends Applet
{
cCheckbox cchkRed;
cCheckbox cchkBold;
cCheckbox cchkItalic;
Image imgChecked;
Image imgUnchecked;
Color clrText = Color.black;
int nFontStyle = Font.PLAIN;
// ===========================================
// init
// ===========================================
public void init()
{
setBackground(Color.yellow);
setForeground(Color.black);
imgChecked =
getImage(getCodeBase(), "checked.gif");
imgUnchecked =
getImage(getCodeBase(), "unchecked.gif");
cchkRed = new cCheckbox(this,
imgChecked, imgUnchecked,
"Red", 80, 20);
cchkBold = new cCheckbox(this,
imgChecked, imgUnchecked,
"Bold", 80, 20);
cchkItalic = new cCheckbox(this,
imgChecked, imgUnchecked,
"Italic", 80, 20);
add(cchkRed);
add(cchkBold);
add(cchkItalic);
}
// ============================================
// paint
// ============================================
public void paint(Graphics g)
{
g.setColor(clrText);
g.setFont(
new Font("Helvetica", nFontStyle, 24));
g.drawString("Test string", 10, 60);
}
// ===========================================
// getAppletInfo
// ===========================================
public String getAppletInfo()
{
return "Name: CustomCheckBox";
}
// ===========================================
// action
// ===========================================
public boolean action(Event evt, Object obj)
{
cCheckbox cch;
if(evt.target instanceof cCheckbox)
{
cch = (cCheckbox)evt.target;
if(cch.equals(cchkRed))
{
if(cch.getState())
clrText = Color.red;
else
clrText = Color.black;
}
else if(cch.equals(cchkItalic))
{
if(cch.getState())
nFontStyle |= Font.ITALIC;
else
nFontStyle &= ~Font.ITALIC;
}
else if(cch.equals(cchkBold))
{
if(cch.getState())
nFontStyle |= Font.BOLD;
else
nFontStyle &= ~Font.BOLD;
}
repaint();
return true;
}
else
return false;
}
}
// ===========================================
// Class cCheckbox
// ===========================================
class cCheckbox extends Canvas
{
Image imgChecked;
Image imgUnchecked;
Container cont;
int boxWidth;
int boxHeight;
Dimension dimMinSize;
boolean bChecked = false;
String chkTitle;
// ===========================================
// cCheckbox
// ===========================================
public cCheckbox(Container parent,
Image imgCh, Image imgUnch,
String chkTitle, int width, int height)
{
if(imgCh == null || imgUnch == null)
{
System.err.println("Invalid image");
return;
}
imgChecked = imgCh;
imgUnchecked = imgUnch;
cont = parent;
boxWidth = width;
boxHeight = height;
this.chkTitle = chkTitle;
dimMinSize = new Dimension(
boxWidth, boxHeight);
}
// ===========================================
// getPreferredSize
// ===========================================
public Dimension getPreferredSize()
{
return dimMinSize;
}
// ===========================================
// getMinimumSize
// ===========================================
public Dimension getMinimumSize()
{
return dimMinSize;
}
// ===========================================
// preferredSize
// ===========================================
public Dimension preferredSize()
{
return dimMinSize;
}
// ===========================================
// minimumSize
// ===========================================
public Dimension minimumSize()
{
return dimMinSize;
}
// ===========================================
// paint
// ===========================================
public void paint(Graphics g)
{
FontMetrics fm = g.getFontMetrics();
int nTitleHeight = fm.getAscent() -
fm.getLeading() - fm.getDescent();
int x0 = boxHeight + 10;
int y0 = ((boxHeight - nTitleHeight) / 2) +
nTitleHeight;
if(bChecked)
{
g.drawImage(imgChecked, 0, 0, this);
g.drawString(chkTitle, x0, y0);
}
else
{
g.drawImage(imgUnchecked, 0, 0, this);
g.drawString(chkTitle, x0, y0);
}
}
// ===========================================
// mouseDown
// ===========================================
public boolean mouseDown(
Event ev, int x, int y)
{
if(bChecked)
bChecked = false;
else
bChecked = true;
repaint();
doAction();
return true;
}
// ===========================================
// doAction
// ===========================================
public void doAction()
{
Event evt = new Event(this, 0, this);
cont.action(evt, (Object)this);
}
// ===========================================
// getState
// ===========================================
public boolean getState()
{
return bChecked;
}
// ===========================================
// setState
// ===========================================
public void setState(boolean bNewState)
{
bChecked = bNewState;
}
}
|