/*
* Swing version.
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
* This displays a framed area containing one of
* each shape you can draw.
*/
public class ShapesDemo extends JApplet {
//Executed only when this program is run as an applet.
public void init() {
ShapesPanel shapesPanel = new ShapesPanel();
getContentPane().add(shapesPanel, BorderLayout.CENTER);
}
//Executed only when this program is run as an applicaiton.
public static void main(String[] args) {
JFrame f = new JFrame("ShapesDemo");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
ShapesPanel shapesPanel = new ShapesPanel();
f.getContentPane().add(shapesPanel, BorderLayout.CENTER);
f.setSize(new Dimension(550, 200));
f.setVisible(true);
}
}
class ShapesPanel extends JPanel {
final int maxCharHeight = 15;
final Color bg = Color.lightGray;
final Color fg = Color.black;
public ShapesPanel() {
//Initialize drawing colors, border, opacity.
setBackground(bg);
setForeground(fg);
setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createRaisedBevelBorder(),
BorderFactory.createLoweredBevelBorder()));
}
public void paintComponent(Graphics g) {
super.paintComponent(g); //clears the background
Insets insets = getInsets();
int currentWidth = getWidth() - insets.left - insets.right;
int currentHeight = getHeight() - insets.top - insets.bottom;
int gridWidth = currentWidth / 7;
int gridHeight = currentHeight / 2;
Color fg3D = Color.lightGray;
int firstX = insets.left + 3;
int firstY = insets.top + 3;
int x = firstX;
int y = firstY;
int stringY = gridHeight - 7;
int rectWidth = gridWidth - 2*x;
int rectHeight = stringY - maxCharHeight - y;
// drawLine(x1, y1, x2, y2)
g.drawLine(x, y+rectHeight-1, x + rectWidth, y);
g.drawString("drawLine", x, stringY);
x += gridWidth;
// drawRect(x, y, w, h)
g.drawRect(x, y, rectWidth, rectHeight);
g.drawString("drawRect", x, stringY);
x += gridWidth;
// draw3DRect(x, y, w, h, raised)
g.setColor(fg3D);
g.draw3DRect(x, y, rectWidth, rectHeight, true);
g.setColor(fg);
g.drawString("draw3DRect", x, stringY);
x += gridWidth;
// drawRoundRect(x, y, w, h, arcw, arch)
g.drawRoundRect(x, y, rectWidth, rectHeight, 10, 10);
g.drawString("drawRoundRect", x, stringY);
x += gridWidth;
// drawOval(x, y, w, h)
g.drawOval(x, y, rectWidth, rectHeight);
g.drawString("drawOval", x, stringY);
x += gridWidth;
// drawArc(x, y, w, h)
g.drawArc(x, y, rectWidth, rectHeight, 90, 135);
g.drawString("drawArc", x, stringY);
x += gridWidth;
// drawPolygon(xPoints, yPoints, numPoints)
int x1Points[] = {x, x+rectWidth, x, x+rectWidth};
int y1Points[] = {y, y+rectHeight, y+rectHeight, y};
g.drawPolygon(x1Points, y1Points, x1Points.length);
g.drawString("drawPolygon", x, stringY);
// NEW ROW
x = firstX;
y += gridHeight;
stringY += gridHeight;
// drawPolyline(xPoints, yPoints, numPoints)
// Note: drawPolygon would close the polygon.
int x2Points[] = {x, x+rectWidth, x, x+rectWidth};
int y2Points[] = {y, y+rectHeight, y+rectHeight, y};
g.drawPolyline(x2Points, y2Points, x2Points.length);
g.drawString("drawPolyline", x, stringY);
x += gridWidth;
// fillRect(x, y, w, h)
g.fillRect(x, y, rectWidth, rectHeight);
g.drawString("fillRect", x, stringY);
x += gridWidth;
// fill3DRect(x, y, w, h, raised)
g.setColor(fg3D);
g.fill3DRect(x, y, rectWidth, rectHeight, true);
g.setColor(fg);
g.drawString("fill3DRect", x, stringY);
x += gridWidth;
// fillRoundRect(x, y, w, h, arcw, arch)
g.fillRoundRect(x, y, rectWidth, rectHeight, 10, 10);
g.drawString("fillRoundRect", x, stringY);
x += gridWidth;
// fillOval(x, y, w, h)
g.fillOval(x, y, rectWidth, rectHeight);
g.drawString("fillOval", x, stringY);
x += gridWidth;
// fillArc(x, y, w, h)
g.fillArc(x, y, rectWidth, rectHeight, 90, 135);
g.drawString("fillArc", x, stringY);
x += gridWidth;
// fillPolygon(xPoints, yPoints, numPoints)
int x3Points[] = {x, x+rectWidth, x, x+rectWidth};
int y3Points[] = {y, y+rectHeight, y+rectHeight, y};
g.fillPolygon(x3Points, y3Points, x3Points.length);
g.drawString("fillPolygon", x, stringY);
}
}
|