Учебное пособие: Многопоточность и работа с потоками
Пример 1. Использование графических примитивов и шрифтов
import java.awt.*;
import j ava.awt.event.*;
class GraphTest extends Frame{
GraphTest(String s) {
super(s);
setBounds(0, 0, 500, 300);
setVisible(true);
}
public void paint(Graphics g){
Dimension d = getSize();
int dx=d.width/20, dy=d.height/20;
g.drawRect(dx, dy+20, d.width-2*dx, d.height-2*dy-20);
g.drawRoundRect(2*dx, 2*dy+20, d.width-4*dx, d.height-4*dy-20, dx, dy);
g.fillArctd.width (2-dx, d.height-2*dy+1,2*dx, dy-1, 0, 360);
g.drawArctd.width (2-3*dx, d.height-3*dy/2-5, dx, dy/2, 0, 360);
g.drawArctd.width (2+2*dx, d.height-3*dy/2 - 5, dx, dy/2, 0, 360);
Font fl = new Font("Serif", Font.BOLD(Font.ITALIC, 2*dy);
Font f2 = new Font ("Serif", Font.BOLD, 5*dy/2);
FontMetrics fml = getFontMetrics(fl);
FontMetrics fm2 = getFontMetrics(f2);
String s1 = "Всякая последняя ошибка";
String s2 = "является предпоследней.";
String s3 = "Закон отладки";
int firstLine = d.height/3;
int nextLine = fml.getHeight();
int secondLine = firstLine+nextLine/2;
g.setFont(f2);
g.drawstring(s3, (d.width-fm2.stringWidth(s3))/2, firstLine);