Результатом данногой программы является круглая кнопка с изображенным на ней рисунком чашечки дымящегося кофе.
(за художеские способности, или вернее -- их отсутсвие, просьба гнилыми бананами не кидать :))
import java.awt.*;
import java.awt.event.*;
class UnButton extends Component implements MouseListener
{
private boolean isDown=false;
public UnButton()
{
super();
addMouseListener(this);
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
}
public void drawUn(Graphics g, int x, int y, int w, int h)
{ //Здесь рисуется рисунок, который потом будет на кнопке
g.drawLine(x+10, h-13, 3*w/4, h-13);
g.drawLine(x+11, h-12, 3*w/4-1, h-12);
g.drawLine(x+12, h-11, 3*w/4-2, h-11);
g.fillOval(w/4, h/2-2, 3*w/6, h/8);
g.drawLine(w/4, h/2, x+17, h-13);
g.drawLine(w/4+3*w/6, h/2, 3*w/4-8, h-13);
g.drawArc(w/2-5, h/3-5, w/6, h/6, -45, 180);
g.drawArc(w/3, h/4-5, w/6, h/6, 135, 180);
}
public void paint (Graphics g)
{ //Создаем саму кнопку с рисунком
int w=getSize().width, h=getSize().height;
int d=Math.min(w, h);
Color c=g.getColor();
g.setColor(Color.lightGray);
g.fillArc(0, 0, d, d, 0, 360);
g.setColor(c);
if (isDown)
{
g.drawArc(0, 0, d, d, 43, 180);
g.drawArc(1, 1, d-2, d-2, 43, 180);
drawUn(g, 8, 10, d, d);
} else
{
g.drawArc(0, 0, d, d, 229, 162);
g.drawArc(1, 1, d-2, d-2, 225, 170);
drawUn(g, 6, 8, d, d);
}
super.paint(g);
}
public Dimension getPreferredSize()
{
return new Dimension(30, 30);
}
public Dimension getMinimumSize()
{
return getPreferredSize();
}
public Dimension getMaximumSize()
{
return getPreferredSize();
}
public void mousePressed(MouseEvent e)
{
isDown=true;
repaint();
}
public void mouseReleased(MouseEvent e)
{
isDown=false;
repaint();
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
}
public class DrawButton extends Frame
{ // Для сравнения приводится и стандартная кнопка
DrawButton(String s)
{
super(s);
setLayout(null);
setBackground(Color.white);
Button b=new Button("OK");
b.setBounds(200, 50, 100, 60); add(b);
UnButton d=new UnButton();
d.setBounds(50,50,65,65); add(d);
setSize(400,150);
setVisible(true);
}
public static void main(String[]args)
{
Frame f=new DrawButton("The button with a picture");
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent ev)
{
System.exit(0);
}
});
}
}