Circle.java

Circle.java

Circle.java

import  java . awt . * ;
import  java . util . zip . CheckedInputStream ;

// File name: Circle.java
// Written by: Richard X. Mercado
// Description: This program is a subclass of GeometricObjects, inherits its abstract methods, and
// performs task related to Cirlce shape.
// Challenges:
// Time Spent: 7 days on GeometricShapes Project
// Revision History:
// Date:                By:      Action:
// ---------------------------------------------------
// 02/19/2021   Richard Mercado     Created everything but equals()
// 02/20/2021   Richard Mercado     Created equals()

public   class   Circle   extends   GeometricObject   {

//instance variable
private   double  radius ;

//constructors
public   Circle ()   {
}

//constructor
public   Circle ( double  radius )   {
this . radius  =  radius ;
}

//constructor
public   Circle ( double  radius ,   String  color ,   boolean  filled ){
super ( color ,  filled );
getDate ();
this . radius  =  radius ;
}

//set and get methods
public   void  setRadius ( double  radius )   {   this . radius  =  radius ;   }
public   double  getRadius (){
return  radius ;
}

//determines with if the radius of each obj are equals to each other
public   boolean  equals ( Circle  o ){
if (( this . getRadius ()   ==  o . getRadius ()))
return   true ;

return   false ;
}

//inherited abstract method - determines how to get the area of a circle
@ Override
public   double  getArea (){
return   ( radius  *  radius  *   Math . PI );
}

//inherited abstract method - calculates the perimeter of specific shape
@ Override
public   double  getPerimeter ()   {
return   ( 2   *  radius  *   Math . PI );
}

//inherited abstract method - display name of shape
@ Override
public   String  getObjName (){
return   "[Circle]" ;
}

//inherited abstract method - display strings for how to draw specific shape
@ Override
public   String  howToDraw ()   {
return   String . format ( "Circle color: %s and filled: %s" ,  getColor (),  isFilled ());
}

//Display string for objects
@ Override
public   String  toString (){
return   String . format ( "%s Radius: %.2f Circle's Area: %.2f Circle's Perimeter: %.2f" ,
getObjName (),  getRadius (),  getArea (),  getPerimeter ());
}
}

Colorable.java

Colorable.java

// File name: Colorable.java
// Written by: Richard X. Mercado
// Description: This program creates super constructors that will be used through out the entire program for created
//              other constructors with color and filled instance variables and abstract method howToDraw that will
//              be inherited by GeometricObject abstract class
// Challenges: No challenges with colorable class
// Time Spent: 7 days on GeometricShapes Project
// Revision History:
// Date:                By:      Action:
// ---------------------------------------------------
// 02/15/2021   Richard Mercado   created entire colorable abstract class

public   abstract   class   Colorable   {

//instance variables
private   String  color ;
private   boolean  filled ;

//constructor
public   Colorable ()   {
color  =   "WHITE" ;  filled  =   false ;
}

//constructor
public   Colorable ( String  color ,   boolean  filled )   {
this . color  =  color ;
this . filled  =  filled ;
}

//set and get method
public   String  getColor ()   {   return  color ;   }
public   void  setColor ( String  color )   {   this . color  =  color ;   }
public   void  setFilled ( boolean  isFilled )   {  filled  =  isFilled ;   }

//isFilled method
public   boolean  isFilled ()   {   return  filled ;   }

//abstract howToDraw methods
public   abstract   String  howToDraw ();
}

Controller.java

Controller.java

public   class   Controller   {
}

GeometricObject.java

GeometricObject.java

// File name: GeometricObject.java
// Written by: Richard X. Mercado
// Description: subclass of Colorable. this class has the methods to compare two objects, create a clone of an object,
//              and determines the greatest of the two objects being compared by there area
// Challenges: Creating the compareTo method, static max method,
// Time Spent:7 days on GeometricShapes Project
// Revision History:
// Date:                By:      Action:
// ---------------------------------------------------
/* 02/16/2021   Richard Mercado    Created everything but compareTo(), max(), and clone()
02/17/2021   Richard Mercado    Created clone()
02/19/2021   Richard Mercado    Created max()
02/20/2021   Richard Mercado    Created compareTo()
*/

import  java . util . Date ;
public   abstract   class   GeometricObject   extends   Colorable   implements   Comparable < GeometricObject > , Cloneable   {

//instance variables
private   Date  dateCreated ;

//Constructors
public   GeometricObject (){
super ();
dateCreated  =   new   Date ();
}

//constructor
public   GeometricObject ( String  color ,   boolean  filled )   {
super ( color ,  filled );
dateCreated  =   new   Date ();
}

//additional methods
public   Date  getDate (){   return  dateCreated ;   }

//compares objects by there area and determines if obj is either greater, less, or equal
public   int  compareTo ( GeometricObject  o )
{
if   ( this . getArea ()   <  o . getArea ())
return   - 1 ;
if   ( this . getArea  ()   >  o . getArea ())
return   1 ;
return   0 ;
}

//Created a clone of an object
@ Override
public   Object  clone ()   throws   CloneNotSupportedException   {
return   super . clone ();
}

//uses compareTo() and compares two objs and determines which one is greater
public   static   GeometricObject  max ( GeometricObject  obj1 ,   GeometricObject  obj2 )   {
if   ( obj1 . compareTo ( obj2 )   ==   1 )
return  obj1 ;
else
return  obj2 ;
}

//Display string for objects
@ Override
public   String  toString (){
return   String . format (
"Date Created: %s%n"   +
"Color: %s%n"   +
"Filled: %s%n" ,
dateCreated ,  getColor (),  isFilled ());
}

//Abstract methods
public   abstract   String  getObjName ();
public   abstract   double  getArea ();
public   abstract   double  getPerimeter ();

}

MyJavaFX.java

MyJavaFX.java

import  javafx . application . Application ;
import  javafx . event . ActionEvent ;
import  javafx . event . Event ;
import  javafx . event . EventHandler ;
import  javafx . scene . Scene ;
import  javafx . scene . control . Button ;
import  javafx . scene . layout . * ;
import  javafx . stage . Stage ;
//import javafx.scene.ComboBoxBase;
import  javafx . scene . control . ComboBox ;
import  javafx . collections . FXCollections ;
import  javafx . geometry . Insets ;
import  javafx . scene . Group ;
import  javafx . scene . control . Label ;
import  javafx . scene . control . Slider ;
import  javafx . beans . value . ChangeListener ;
import  javafx . beans . value . ObservableValue ;
import  javafx . geometry . Pos ;
import  javafx . scene . control . CheckBox ;
import  javafx . scene . control . RadioButton ;
import  javafx . scene . control . TextField ;
import  javafx . scene . control . TitledPane ;
import  javafx . scene . control . ToggleGroup ;

public   class   MyJavaFX   extends   Application   {
public   static   final   String  SHAPE_CIRCLE  =   "Circle" ;
public   static   final   String  SHAPE_RECTANGLE  =   "Rectangle" ;
public   static   final   String  SHAPE_SQUARE  =   "Square" ;
public   static   final   String  SHAPE_TRIANGLE  =   "Triangle" ;
private   static   final   String []  shapes  =   { SHAPE_CIRCLE ,  SHAPE_RECTANGLE ,  SHAPE_SQUARE ,  SHAPE_TRIANGLE };
private   TextField  resultTextFieldShape ;
private   TextField  resultTextFieldInformation ;
private   TextField  resultTextFieldArea ;
private   TextField  resultTextFieldPerimeter ;
private   TextField  textFieldWidth ;
private   TextField  textFieldHeight ;
private   TextField  textFieldSide ;
private   Slider  opacityLevel ;
private   String  selectedShape  =  SHAPE_CIRCLE ;
private   String  selectedColor  =   "BLACK" ;
private   boolean  isFilled  =   false ;
private   GeometricObject  shape ;
//private final String[] shapes = {"Circle", "Rectangle", "Square", "Triangle"};
//ComboBox<String> chooseShape = new ComboBox<String>();

@ Override
public   void  start ( Stage  stage )   throws   Exception   {

//create title of stage
stage . setTitle ( "Shape Chooser" );

//Creating Main Pane
Pane  mainScene  =   new   Pane ();

//Setting size of Main Pane
mainScene . setPrefSize ( 800 ,   590 );

//Creating Input Data Title Pane
TitledPane  gridTitlePane  =   new   TitledPane ();
gridTitlePane . relocate ( 50 ,   50 );

//Creating Grid Pane
GridPane  gridExample  =   new   GridPane ();
gridExample . setVgap ( 8 );
gridExample . setPadding ( new   Insets ( 10 , 10 ,   10 ,   10 ));

//Creating BorderPane
BorderPane  paneForComboBox  =   new   BorderPane ();
paneForComboBox . setLeft ( new   Label ( "Select Geometric Shape" ));
paneForComboBox . relocate ( 50 ,   20 );

//Creating Slider
opacityLevel  =   new   Slider ( 0 ,   30 ,   15 );

//final Label opacityCaption = new Label("Radius:");
gridExample . add ( new   Label   ( "Radius: " ),   0 ,   1 );
final   Label  opacityValue  =   new   Label ( Double . toString ( opacityLevel . getValue ()));

gridExample . setVgap ( 10 );
gridExample . setHgap ( 100 );

//Real Time value for slider
opacityLevel . valueProperty (). addListener ( new   ChangeListener < Number > ()   {
@ Override
public   void  changed ( ObservableValue <?   extends   Number >  ov ,
Number  old_val ,   Number  new_val )   {
System . out . println ( new_val . doubleValue ());
opacityValue . setText ( String . format ( "%.2f" ,  new_val ));
calculateArea ();
}
});
GridPane . setConstraints ( opacityLevel ,   1 ,   1 );
gridExample . getChildren (). add ( opacityLevel );
gridExample . add ( opacityValue , 2 , 1 );

//GridPane.setConstraints(opacityValue, 2, 1);

//TextField objects for right alignment
textFieldWidth  =   new   TextField ();
textFieldWidth . setAlignment ( Pos . CENTER_RIGHT );

textFieldHeight  =   new   TextField ();
textFieldHeight . setAlignment ( Pos . CENTER_RIGHT );

textFieldSide  =   new   TextField ();
textFieldSide . setAlignment ( Pos . CENTER_RIGHT );

//Adding Labels
gridExample . add ( new   Label ( "Width: " ),   0 ,   2 );
gridExample . add ( textFieldWidth ,   1 ,   2 );

gridExample . add ( new   Label ( "Height: " ),   0 ,   3 );
gridExample . add ( textFieldHeight ,   1 ,   3 );

gridExample . add ( new   Label ( "Side: " ),   0 ,   4 );
gridExample . add ( textFieldSide ,   1 ,   4 );

//Title for TitlePane, centering, and setting content
gridTitlePane . setText ( "Input Data" );
gridTitlePane . setAlignment ( Pos . CENTER );
gridTitlePane . setContent ( gridExample );
gridTitlePane . setPrefWidth ( 705 );

//Creating ComboBox
ComboBox < String >  comboBox  =   new   ComboBox <> ( FXCollections . observableArrayList ( shapes ));
comboBox . relocate ( 635 ,   10 );

comboBox . getSelectionModel (). select ( 0 );
// Create action event
EventHandler < ActionEvent >  selectShapeEvent  =  e  ->  handleShapeChange ( comboBox . getValue ());

// Set on action
comboBox . setOnAction ( selectShapeEvent );

//Creating Check Box
CheckBox  checkBox  =   new   CheckBox ( "Filled" );
gridExample . add ( checkBox ,   3 ,   1 );

RadioButton  radioButton1  =   new   RadioButton ( "Black" );
radioButton1 . setSelected ( true );
radioButton1 . requestFocus ();
RadioButton  radioButton2  =   new   RadioButton ( "Red" );
RadioButton  radioButton3  =   new   RadioButton ( "Green" );
RadioButton  radioButton4  =   new   RadioButton ( "Blue" );

ToggleGroup  radioGroup  =   new   ToggleGroup ();

radioButton1 . setToggleGroup ( radioGroup );
radioButton2 . setToggleGroup ( radioGroup );
radioButton3 . setToggleGroup ( radioGroup );
radioButton4 . setToggleGroup ( radioGroup );

EventHandler < ActionEvent >  e  =  event  ->   {
selectedColor  =   (( RadioButton )  event . getSource ()). getText (). toUpperCase ();
if   ( shape != null )  shape . setColor ( selectedColor );
updateUI ( shape );
};
radioButton1 . setOnAction ( e );
radioButton2 . setOnAction ( e );
radioButton3 . setOnAction ( e );
radioButton4 . setOnAction ( e );

VBox  vbox  =   new   VBox ( radioButton1 ,  radioButton2 ,  radioButton3 ,  radioButton4 );

gridExample . add ( vbox ,   3 ,   2 );

//Creating Result Title Pane
TitledPane  resultTitlePane  =   new   TitledPane ();
resultTitlePane . setCollapsible ( false );
resultTitlePane . relocate ( 50 ,   320 );

//Creating ResultExample Pane
GridPane  resultExample  =   new   GridPane ();
resultExample . setVgap ( 8 );
resultExample . setPadding ( new   Insets ( 10 , 10 ,   10 ,   10 ));

resultTextFieldShape  =   new   TextField ();
resultTextFieldShape . setAlignment ( Pos . TOP_LEFT );
resultTextFieldShape . setPrefWidth ( 600 );
resultTextFieldShape . setEditable ( false );

resultTextFieldInformation  =   new   TextField ();
resultTextFieldInformation . setAlignment ( Pos . TOP_LEFT );
resultTextFieldInformation . setEditable ( false );

resultTextFieldArea  =   new   TextField ();
resultTextFieldArea . setAlignment ( Pos . TOP_LEFT );
resultTextFieldArea . setEditable ( false );

resultTextFieldPerimeter  =   new   TextField ();
resultTextFieldPerimeter . setAlignment ( Pos . TOP_LEFT );
resultTextFieldPerimeter . setEditable ( false );

//Creating Result Title Pane Labels
resultExample . add ( new   Label ( "Shape: " ),   0 ,   2 );
resultExample . add ( resultTextFieldShape ,   1 ,   2 );

resultExample . add ( new   Label ( "Information: " ),   0 ,   3 );
resultExample . add ( resultTextFieldInformation ,   1 ,   3 );

resultExample . add ( new   Label ( "Area: " ),   0 ,   4 );
resultExample . add ( resultTextFieldArea ,   1 ,   4 );

resultExample . add ( new   Label ( "Perimeter: " ),   0 ,   5 );
resultExample . add ( resultTextFieldPerimeter ,   1 ,   5 );

//Title name, centering, and setting
resultTitlePane . setText ( "Result" );
resultTitlePane . setAlignment ( Pos . CENTER );
resultTitlePane . setContent ( resultExample );

TitledPane  bottomButtonTitlePane  =   new   TitledPane ();
bottomButtonTitlePane . setCollapsible ( false );
bottomButtonTitlePane . relocate ( 50 ,   550 );

//Creating ResultExample Pane
GridPane  bottomExample  =   new   GridPane ();
bottomExample . setVgap ( 8 );
bottomExample . setPadding ( new   Insets ( 10 , 10 ,   10 ,   10 ));

//Calculate, Clear, and Exit Buttons
Button  calculateButton  =   new   Button ( "Calculate" );
Button  clearButton  =   new   Button ( "Clear" );
Button  exitButton  =   new   Button ( "Exit" );
int  prefButtonWidth  =   120 ;
calculateButton . setPrefWidth ( prefButtonWidth );
clearButton . setPrefWidth ( prefButtonWidth );
exitButton . setPrefWidth ( prefButtonWidth );

Group  bottomButtonGroup  =   new   Group ();

bottomButtonGroup . getChildren (). add ( calculateButton );
bottomButtonGroup . getChildren (). add ( clearButton );
bottomButtonGroup . getChildren (). add ( exitButton );

HBox  hbox  =   new   HBox ( calculateButton ,  clearButton ,  exitButton  );
hbox . setAlignment ( Pos . CENTER );
hbox . setPrefWidth ( 680 );
bottomExample . add ( hbox ,   4 , 2 );
bottomExample . relocate ( 50 ,   520 );

//bottomButtonTitlePane.setText("Result");
//bottomButtonTitlePane.setAlignment(Pos.CENTER);
//bottomButtonTitlePane.setContent(bottomExample);

///////////////////////////////////////////////////////////////////////////

//check box action
checkBox . setOnAction ( new   EventHandler < ActionEvent > ()   {
@ Override
public   void  handle ( ActionEvent  event )   {
//update shape and UI
isFilled  =  checkBox . isSelected ();
if   ( shape != null )  shape . setFilled ( isFilled );
updateUI ( shape );
}
});

calculateButton . setOnAction (( ActionEvent  event )   ->  calculateArea ());

clearButton . setOnAction (( ActionEvent  event )   ->   {
//clear all fields and reset to circle
comboBox . getSelectionModel (). select ( 0 );
checkBox . setSelected ( false );
radioButton1 . setSelected ( true );
isFilled  =   false ;
selectedColor  =   "BLACK" ;
selectedShape  =  SHAPE_CIRCLE ;
if   ( shape != null )   {
shape . setColor ( selectedColor );
shape . setFilled ( isFilled );
}
handleShapeChange ( selectedShape );
});

//Exit Button ACTION
exitButton . setOnAction (( ActionEvent  event )   ->   {
System . exit ( 0 );
});

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////

//Retreiving and storing all children to mainScene
mainScene . getChildren (). addAll ( paneForComboBox ,  comboBox ,  gridTitlePane ,  gridExample ,
resultTitlePane ,  resultExample ,  bottomExample );

//update shape initially to circle
handleShapeChange ( SHAPE_CIRCLE );

//Creating, setting, and displaying scene
Scene  scene  =   new   Scene ( mainScene );
stage . setScene ( scene );
stage . show ();

}

private   void  handleShapeChange ( String  shape )   {
//clear current data
clearFields ();
//enable fields relevant to shape
selectedShape  =  shape ;
switch   ( shape )   {
case  SHAPE_CIRCLE :
opacityLevel . setDisable ( false );
break ;
case  SHAPE_RECTANGLE :
textFieldHeight . setDisable ( false );
textFieldWidth . setDisable ( false );
break ;
case  SHAPE_SQUARE :
textFieldSide . setDisable ( false );
break ;
case  SHAPE_TRIANGLE :
textFieldSide . setDisable ( false );
textFieldHeight . setDisable ( false );
textFieldWidth . setDisable ( false );
break ;
}
}

private   void  calculateArea ()   {
//update instance for correct shape and details
switch   ( selectedShape )   {
case  SHAPE_CI

You didn't find what you were looking for? Upload your specific requirements now and relax as your preferred tutor delivers a top quality customized paper

Order Now