<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.zcubes.com/index.php?action=history&amp;feed=atom&amp;title=Yurttas%2FPL%2FOOL%2FJava%2FF%2F05%2F01%2F05%2F10%2FGeometryApplet00.java</id>
	<title>Yurttas/PL/OOL/Java/F/05/01/05/10/GeometryApplet00.java - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.zcubes.com/index.php?action=history&amp;feed=atom&amp;title=Yurttas%2FPL%2FOOL%2FJava%2FF%2F05%2F01%2F05%2F10%2FGeometryApplet00.java"/>
	<link rel="alternate" type="text/html" href="http://wiki.zcubes.com/index.php?title=Yurttas/PL/OOL/Java/F/05/01/05/10/GeometryApplet00.java&amp;action=history"/>
	<updated>2026-05-18T17:12:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://wiki.zcubes.com/index.php?title=Yurttas/PL/OOL/Java/F/05/01/05/10/GeometryApplet00.java&amp;diff=177094&amp;oldid=prev</id>
		<title>MassBot1: Created page with &quot;&lt;syntaxhighlight lang=&quot;java&quot; line start=&quot;1&quot; enclose=&quot;div&quot;&gt;/**  *  GeometryApplet00: Demonstrating GUI + Event Handling in Swing  */  import javax.swing.*; import javax.swing.b...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.zcubes.com/index.php?title=Yurttas/PL/OOL/Java/F/05/01/05/10/GeometryApplet00.java&amp;diff=177094&amp;oldid=prev"/>
		<updated>2013-11-07T19:36:02Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line start=&amp;quot;1&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;*  *  GeometryApplet00: Demonstrating GUI + Event Handling in Swing: &lt;/span&gt;  import javax.swing.*; import javax.swing.b...&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line start=&amp;quot;1&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;/**&lt;br /&gt;
 *  GeometryApplet00: Demonstrating GUI + Event Handling in Swing&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import javax.swing.*;&lt;br /&gt;
import javax.swing.border.*;&lt;br /&gt;
&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
import java.awt.event.*;&lt;br /&gt;
&lt;br /&gt;
import java.applet.*;&lt;br /&gt;
&lt;br /&gt;
interface IGeometryConstants {&lt;br /&gt;
  int SQUARE  = 0;&lt;br /&gt;
  int CIRCLE  = 1;&lt;br /&gt;
  int ELLIPSE = 2;&lt;br /&gt;
  String[] shapeNames = {&amp;quot;Square&amp;quot;, &amp;quot;Circle&amp;quot;, &amp;quot;Ellipse&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
  int SMALL  = 0;&lt;br /&gt;
  int MEDIUM = 1;&lt;br /&gt;
  int LARGE  = 2;&lt;br /&gt;
  String[] sizeNames = {&amp;quot;Small&amp;quot;, &amp;quot;Medium&amp;quot;, &amp;quot;Large&amp;quot;};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class GeometryApplet00 extends JApplet&lt;br /&gt;
                              implements IGeometryConstants {&lt;br /&gt;
&lt;br /&gt;
  // Panel for shape&lt;br /&gt;
  JPanel shapePanel;&lt;br /&gt;
  ButtonGroup shapeGroup;&lt;br /&gt;
  JRadioButton squareRB;&lt;br /&gt;
  JRadioButton circleRB;&lt;br /&gt;
  JRadioButton ellipseRB;&lt;br /&gt;
&lt;br /&gt;
  // Panel for x, y coordinates&lt;br /&gt;
  JPanel xyPanel;&lt;br /&gt;
  JLabel xLabel;&lt;br /&gt;
  JTextField xInput;&lt;br /&gt;
  JLabel yLabel;&lt;br /&gt;
  JTextField yInput;&lt;br /&gt;
&lt;br /&gt;
  // Panel for size and fill&lt;br /&gt;
  JPanel sizePanel;&lt;br /&gt;
  JLabel sizeLabel;&lt;br /&gt;
  JComboBox sizeChoices;&lt;br /&gt;
  JCheckBox fillCB;&lt;br /&gt;
&lt;br /&gt;
  // Box for shape, coordinates, size and fill&lt;br /&gt;
  Box leftBox;&lt;br /&gt;
&lt;br /&gt;
  // Panel for draw button, drawing region and message display.&lt;br /&gt;
  JPanel rightPanel;&lt;br /&gt;
  JButton drawButton;&lt;br /&gt;
  JScrollPane scrollPane;&lt;br /&gt;
  DrawRegion drawRegion;&lt;br /&gt;
  JTextField messageDisplay;&lt;br /&gt;
&lt;br /&gt;
  // Top container&lt;br /&gt;
  Container topContainer;&lt;br /&gt;
&lt;br /&gt;
  public void init() {&lt;br /&gt;
    makeShapePanel();&lt;br /&gt;
    makeXYPanel();&lt;br /&gt;
    makeSizePanel();&lt;br /&gt;
    makeLeftBox();&lt;br /&gt;
    makeRightPanel();&lt;br /&gt;
&lt;br /&gt;
    addListeners();&lt;br /&gt;
&lt;br /&gt;
    topContainer = getContentPane();&lt;br /&gt;
    topContainer.add(leftBox, BorderLayout.WEST);&lt;br /&gt;
    topContainer.add(rightPanel, BorderLayout.CENTER);&lt;br /&gt;
&lt;br /&gt;
    try {&lt;br /&gt;
      UIManager.setLookAndFeel(&lt;br /&gt;
        UIManager.getSystemLookAndFeelClassName()&lt;br /&gt;
//        &amp;quot;com.sun.java.swing.plaf.motif.MotifLookAndFeel&amp;quot;&lt;br /&gt;
//        &amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;&lt;br /&gt;
//        &amp;quot;javax.swing.plaf.mac.MacLookAndFeel&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    catch(Exception e) {&lt;br /&gt;
      messageDisplay.setText(e.toString());&lt;br /&gt;
    }&lt;br /&gt;
    SwingUtilities.updateComponentTreeUI(this);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Panel for shape&lt;br /&gt;
  void makeShapePanel() {&lt;br /&gt;
    squareRB = new JRadioButton(shapeNames[SQUARE], true);&lt;br /&gt;
    circleRB = new JRadioButton(shapeNames[CIRCLE], false);&lt;br /&gt;
    ellipseRB = new JRadioButton(shapeNames[ELLIPSE], false);&lt;br /&gt;
&lt;br /&gt;
    shapeGroup = new ButtonGroup();&lt;br /&gt;
    shapeGroup.add(squareRB);&lt;br /&gt;
    shapeGroup.add(circleRB);&lt;br /&gt;
    shapeGroup.add(ellipseRB);&lt;br /&gt;
&lt;br /&gt;
    shapePanel = new JPanel();&lt;br /&gt;
    shapePanel.setLayout(new FlowLayout());&lt;br /&gt;
    shapePanel.add(squareRB);&lt;br /&gt;
    shapePanel.add(circleRB);&lt;br /&gt;
    shapePanel.add(ellipseRB);&lt;br /&gt;
    shapePanel.setBorder(new TitledBorder(&amp;quot;Shapes&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Panel for x,y coordinates&lt;br /&gt;
  void makeXYPanel() {&lt;br /&gt;
    xyPanel = new JPanel();&lt;br /&gt;
&lt;br /&gt;
    xLabel  = new JLabel(&amp;quot;X Coordinate:&amp;quot;);&lt;br /&gt;
    yLabel  = new JLabel(&amp;quot;Y Coordinate:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    xInput  = new JTextField(5);&lt;br /&gt;
    yInput  = new JTextField(5);&lt;br /&gt;
&lt;br /&gt;
    xyPanel.setLayout(new GridLayout(2,2));&lt;br /&gt;
    xyPanel.add(xLabel);&lt;br /&gt;
    xyPanel.add(xInput);&lt;br /&gt;
    xyPanel.add(yLabel);&lt;br /&gt;
    xyPanel.add(yInput);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Panel for size and fill&lt;br /&gt;
  void makeSizePanel() {&lt;br /&gt;
    sizePanel   = new JPanel();&lt;br /&gt;
&lt;br /&gt;
    sizeLabel   = new JLabel(&amp;quot;Size:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    sizeChoices = new JComboBox(sizeNames);&lt;br /&gt;
    sizeChoices.setSelectedIndex(0);&lt;br /&gt;
&lt;br /&gt;
    fillCB = new JCheckBox(&amp;quot;Fill&amp;quot;, false);&lt;br /&gt;
&lt;br /&gt;
    sizePanel.setLayout(new FlowLayout());&lt;br /&gt;
    sizePanel.add(sizeLabel);&lt;br /&gt;
    sizePanel.add(sizeChoices);&lt;br /&gt;
    sizePanel.add(fillCB);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Box for shape, coordinates, size and fill&lt;br /&gt;
  void makeLeftBox() {&lt;br /&gt;
    leftBox = new Box(BoxLayout.Y_AXIS);&lt;br /&gt;
&lt;br /&gt;
    leftBox.add(shapePanel);&lt;br /&gt;
    leftBox.add(Box.createGlue());&lt;br /&gt;
    leftBox.add(xyPanel);&lt;br /&gt;
    leftBox.add(Box.createGlue());&lt;br /&gt;
    leftBox.add(sizePanel);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Panel for message display, draw button, and drawing region&lt;br /&gt;
  void makeRightPanel() {&lt;br /&gt;
    rightPanel = new JPanel();&lt;br /&gt;
&lt;br /&gt;
    messageDisplay = new JTextField(&amp;quot;MESSAGE DISPLAY&amp;quot;);&lt;br /&gt;
    messageDisplay.setEditable(false);&lt;br /&gt;
&lt;br /&gt;
    drawButton = new JButton(&amp;quot;Draw&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    drawRegion = new DrawRegion();&lt;br /&gt;
    scrollPane = new JScrollPane(drawRegion);&lt;br /&gt;
&lt;br /&gt;
    rightPanel.setLayout(new BorderLayout());&lt;br /&gt;
    rightPanel.add(drawButton, BorderLayout.NORTH);&lt;br /&gt;
    rightPanel.add(messageDisplay, BorderLayout.SOUTH);&lt;br /&gt;
    rightPanel.add(scrollPane, BorderLayout.CENTER);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Add the listeners.&lt;br /&gt;
  void addListeners() {&lt;br /&gt;
    drawButton.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
        int shape,&lt;br /&gt;
            xCoord,&lt;br /&gt;
            yCoord,&lt;br /&gt;
            width;&lt;br /&gt;
&lt;br /&gt;
        messageDisplay.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
        // Get the shape&lt;br /&gt;
        if(squareRB.isSelected())&lt;br /&gt;
          shape = SQUARE;&lt;br /&gt;
        else if(circleRB.isSelected())&lt;br /&gt;
          shape = CIRCLE;&lt;br /&gt;
        else if(ellipseRB.isSelected())&lt;br /&gt;
          shape = ELLIPSE;&lt;br /&gt;
        else {&lt;br /&gt;
          messageDisplay.setText(&amp;quot;Unknown shape.&amp;quot;);&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Get the coordinates&lt;br /&gt;
        try {&lt;br /&gt;
          xCoord = Integer.parseInt(xInput.getText());&lt;br /&gt;
          yCoord = Integer.parseInt(yInput.getText());&lt;br /&gt;
        } catch (NumberFormatException e) {&lt;br /&gt;
          messageDisplay.setText(&amp;quot;Illegal coordinates.&amp;quot;);&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Get the size&lt;br /&gt;
        switch(sizeChoices.getSelectedIndex()) {&lt;br /&gt;
          case SMALL : width = 30;&lt;br /&gt;
                       break;&lt;br /&gt;
          case MEDIUM : width = 60;&lt;br /&gt;
                        break;&lt;br /&gt;
          case LARGE :  width = 120;&lt;br /&gt;
                        break;&lt;br /&gt;
          default : messageDisplay.setText(&amp;quot;Unknown size.&amp;quot;);&lt;br /&gt;
                    return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        messageDisplay.setText(&amp;quot;Drawing &amp;quot; + shapeNames[shape]);&lt;br /&gt;
&lt;br /&gt;
        drawRegion.doDraw(shape,&lt;br /&gt;
                          xCoord,&lt;br /&gt;
                          yCoord,&lt;br /&gt;
                          fillCB.isSelected(),&lt;br /&gt;
                          width);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class DrawRegion extends JPanel&lt;br /&gt;
                 implements IGeometryConstants {&lt;br /&gt;
  // Values needed for drawing the shape&lt;br /&gt;
  private int shape;&lt;br /&gt;
  private int xCoord;&lt;br /&gt;
  private int yCoord;&lt;br /&gt;
  private boolean fillFlag;&lt;br /&gt;
  private int width;&lt;br /&gt;
&lt;br /&gt;
  // Default constructor&lt;br /&gt;
  public DrawRegion() {&lt;br /&gt;
    setSize(300,300);&lt;br /&gt;
    setBackground(Color.white);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Overridden to always keep the same size&lt;br /&gt;
  public Dimension getPreferredSize() {&lt;br /&gt;
    return getSize();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Set the values and repaint the drawing region.&lt;br /&gt;
  public void doDraw(int shape,&lt;br /&gt;
             int xCoord, int yCoord,&lt;br /&gt;
             boolean fillFlag, int width) {&lt;br /&gt;
&lt;br /&gt;
    this.shape  = shape;&lt;br /&gt;
    this.xCoord   = xCoord;&lt;br /&gt;
    this.yCoord   = yCoord;&lt;br /&gt;
    this.fillFlag = fillFlag;&lt;br /&gt;
    this.width  = width;&lt;br /&gt;
&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Do the drawing of the shape&lt;br /&gt;
  public void paintComponent (Graphics g) {&lt;br /&gt;
    super.paintComponent(g);&lt;br /&gt;
    switch (shape) {&lt;br /&gt;
      case SQUARE:&lt;br /&gt;
        if (fillFlag) g.fillRect(xCoord, yCoord, width, width);&lt;br /&gt;
        else g.drawRect(xCoord, yCoord, width, width);&lt;br /&gt;
        break;&lt;br /&gt;
      case CIRCLE:&lt;br /&gt;
        if (fillFlag) g.fillOval(xCoord, yCoord, width, width);&lt;br /&gt;
        else g.drawOval(xCoord, yCoord, width, width);&lt;br /&gt;
        break;&lt;br /&gt;
      case ELLIPSE:&lt;br /&gt;
        if (fillFlag) g.fillOval(xCoord, yCoord, width, width/2);&lt;br /&gt;
        else g.drawOval(xCoord, yCoord, width, width/2);&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>MassBot1</name></author>
	</entry>
</feed>