Loading...

Messages

Proposals

Stuck in your homework and missing deadline? Get urgent help in $10/Page with 24 hours deadline

Get Urgent Writing Help In Your Essays, Assignments, Homeworks, Dissertation, Thesis Or Coursework & Achieve A+ Grades.

Privacy Guaranteed - 100% Plagiarism Free Writing - Free Turnitin Report - Professional And Experienced Writers - 24/7 Online Support

How to use javafx to make a calculator

23/10/2021 Client: muhammad11 Deadline: 2 Day

framework/.DS_Store
__MACOSX/framework/._.DS_Store
framework/application.css
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */ .vbox1 { -fx-background-color:rgb(20,64,144); -fx-padding: 20; -fx-font-size: 30; } .button{ -fx-background-color:rgb(174,184,219); } .btnEqual{ -fx-background-color:rgb(61,127,61); -fx-text-fill:white; } .btnClear{ -fx-background-color:rgb(155,56,54); -fx-text-fill:white; } .btnBackspace{ -fx-background-color:rgb(80,80,80); -fx-text-fill:white; } .vbox2 { -fx-background-color:rgb(207,59,62); -fx-padding: 20; -fx-font-size: 20; } .vbox3 { -fx-background-color:rgb(90,207,9); -fx-padding: 20; -fx-font-size: 20; } .style1 { -fx-background-color:rgb(217,144,185); } .style2 { -fx-text-fill:red; } .screen1 { -fx-background-color: #FFFFFF; -fx-min-width: 50; -fx-min-height: 50; } .screen2 { -fx-background-color: #FFFFFF; -fx-text-alignment:left ; }

__MACOSX/framework/._application.css
framework/Calculator.java
framework/Calculator.java
package application ;

import javafx . application . Application ;
import javafx . beans . binding . Bindings ;
import javafx . beans . property . DoubleProperty ;
import javafx . beans . property . SimpleDoubleProperty ;
import javafx . event . ActionEvent ;
import javafx . event . EventHandler ;
import javafx . geometry . Pos ;
import javafx . scene . Scene ;
import javafx . scene . control . Button ;
import javafx . scene . control . TextField ;
import javafx . scene . layout . TilePane ;
import javafx . scene . layout . VBox ;
import javafx . scene . text . Font ;
import javafx . stage . Stage ;
import javafx . stage . StageStyle ;

/* This is the GUI class that visualize the calculator
*
* */
public class Calculator extends Application {

private MyStack stack = new MyStack ();
private double font_size = 30 ; //by default the font size on the screen is 30

/*The keyboard key values*/
private static final String [][] key_values = {
{ "0" , "=" , "c" , "<" },
{ "1" , "2" , "3" , "-" },
{ "4" , "5" , "6" , "*" },
{ "7" , "8" , "9" , "+" }
};
private Button btn [][] = new Button [ 4 ][ 4 ]; //all the key buttons
TextField calculator_screen ; //the calculator screen


public static void main ( String [] args ) { launch ( args ); }

@ Override public void start ( Stage stage ) {

/*The outside layout*/
final VBox layout = new VBox ( 30 ); //the size vertically

/*The inside layout for keys or buttons*/
TilePane keypad = new TilePane (); //even it is called keypad, it is a layout
keypad . setVgap ( 7 );
keypad . setHgap ( 7 ); //set the gap between keys


/*Create Calculator Screen */
calculator_screen = new TextField ();
calculator_screen . getStyleClass (). add ( "screen1" ); //set the style of the screen
calculator_screen . setAlignment ( Pos . CENTER_RIGHT ); //make the screen in the center of the calculator
calculator_screen . setEditable ( false ); //make sure the screen cannot be typed in manually
calculator_screen . setPrefWidth ( 300 ); //set the windth of the screen
calculator_screen . setPrefHeight ( 30 );
calculator_screen . setFont ( Font . font ( "Verdana" , font_size ));

/*Create Calculator keyboard*/
keypad . setPrefColumns ( key_values [ 0 ]. length ); //set the preferred number of columns

for ( int i = 0 ; i < 4 ; i ++ ) {
for ( int j = 0 ; j < 4 ; j ++ ) {
btn [ i ][ j ] = new Button ( key_values [ i ][ j ]);
final int a = i ;
final int b = j ;

/*Add button event*/
btn [ i ][ j ]. setOnAction ( new EventHandler < ActionEvent > (){

@ Override
public void handle ( ActionEvent event ) {

StackNode node = new StackNode ( key_values [ a ][ b ]);


if ( a == 0 && b == 2 ) //if the key is "c"
{
stack . clear ();
calculator_screen . setFont ( Font . font ( "Verdana" , 30 ));
font_size = 30 ;
}
else if ( a == 0 && b == 3 ) //if the key is "b"
stack . pop ();
else if ( a == 0 && b == 1 ) // if the key is "="
{
stack . computeExp ();
}
else
stack . push ( node ); //otherwise push the key into the list

String math_exp = stack . getAllNodeValues ();

if ( math_exp . length () * font_size > 1.2 * calculator_screen . getPrefWidth ())
{
font_size /= 1.2 ;
calculator_screen . setFont ( Font . font ( "Verdana" , font_size ));

}

calculator_screen . setText ( math_exp );

}
}
);

//Add special style for the "=" button
if ( a == 0 && b == 1 )
btn [ i ][ j ]. getStyleClass (). add ( "btnEqual" );
else if ( a == 0 && b == 2 )
btn [ i ][ j ]. getStyleClass (). add ( "btnClear" );
else if ( a == 0 && b == 3 )
btn [ i ][ j ]. getStyleClass (). add ( "btnBackspace" );
keypad . getChildren (). add ( btn [ i ][ j ]);

}
}

/*Put the calculator screen and keypad into a VBox layout*/
layout . setAlignment ( Pos . CENTER );
layout . getChildren (). addAll ( calculator_screen , keypad );
layout . getStyleClass (). add ( "vbox1" );
calculator_screen . prefWidthProperty (). bind ( keypad . widthProperty ());


/*Show the window*/
stage . setTitle ( "Calculator" );
stage . initStyle ( StageStyle . UTILITY );
stage . setResizable ( false );
Scene scene = new Scene ( layout );
scene . getStylesheets (). add ( getClass (). getResource ( "application.css" ). toExternalForm ());

stage . setScene ( scene );
stage . show ();
}

}
__MACOSX/framework/._Calculator.java
framework/MyQueue.java
framework/MyQueue.java
package application ;

public class MyQueue < T > {

private T [] arr ; //used to store data into this array in a queue manner

private int total ; //the total number of elements in the queue
private int first ; //the location of the first element in the queue
private int rear ; //the location of the next available element (last one's next)

//Default constructor, by default the capacity is two elements of type T
public MyQueue ()
{
arr = ( T []) new Object [ 2 ];
}

//Resize the MyQueue to the capacity as the input argument specifies
private void resize ( int capacity )
{
T [] tmp = ( T []) new Object [ capacity ];

for ( int i = 0 ; i < total ; i ++ )
tmp [ i ] = arr [( first + i ) % arr . length ];

arr = tmp ;
first = 0 ;
rear = total ;
}

//Check if the queue is empty: if empty, returns true; otherwise returns false
public boolean isEmpty ()
{
//Implementation here...
return false ;
}

//Add one element "ele" into the queue
//Attention: (1) if the current queue is full, you need to resize it to twice of the current size.
// (2) if the "rear" is already pointing to the end of the queue, but there is available space
// in the beginning, you need to "loop" the rear position.
public void enqueue ( T ele )
{
//Implementation here...
}


//Delete the first (oldest) element from the queue and return this element.
//Below is just an example code, you need to modify it.
//Attention: (1) To save space, if the current number of elements is less than or equal to 1/4 of the
// the capacity, shrink the capacity to 1/2 (half) of the original size.
// (2) If the "first" is pointing to the end of the queue, but there is available space
// in the beginning, you need to consider "loop" the first position.
public T dequeue ()
{
//Implementation here...
T ele = arr [ 0 ];
return ele ;
}

}
__MACOSX/framework/._MyQueue.java
framework/MyStack.java
framework/MyStack.java
package application ;

/* Basic node element that is used by the linked list*/
class StackNode {
String data ; //the node stored value
StackNode next ; //pointing to next node

//Default constructor
public StackNode ()
{

}

//Constructor with data value assigned
public StackNode ( String value )
{
data = value ;
}

//Constructor with data value and next node assigned
public StackNode ( String value , StackNode next )
{
data = value ;
this . next = next ;
}

//Basic setters and getters
public String getData () {
return data ;
}

public void setData ( String data ) {
this . data = data ;
}

public StackNode getNext () {
return next ;
}

public void setNext ( StackNode next ) {
this . next = next ;
}


}

/* MyStack class is used to store string into the stack
* According to the stack logic, you need to implement the function members of MyStack based on the linked list structure
* */
public class MyStack {
private StackNode top_node ; //pointing to the first node

//Default constructor
public MyStack ()
{
top_node = null ; //by default, the node is empty.
}

//Constructor with the first node
public MyStack ( StackNode node ) {
top_node = node ;
}

//check if the stack is empty
public boolean isEmpty ()
{
if ( top_node == null )
return true ;
else
return false ;
}

//clear the stack
public void clear ()
{
top_node = null ;
}


//A general push() method for stack
public void pushNode ( StackNode node )
{
if ( top_node == null )
{
top_node = node ;
}
else
{
node . setNext ( top_node );
top_node = node ;
}
}


//a specific push method for this calculator project uses only
public void push ( StackNode node )
{
//if there is no any element in the stack, the calculator only accepts numbers or "-"
if ( top_node == null )
{
if ( node . getData (). matches ( "^[0-9]+$" ) || node . getData (). equals ( "-" ))
top_node = node ;
}
else if ( node . getData (). matches ( "^[0-9]+$" )) //if the inserted node is a number
{
node . setNext ( top_node );
top_node = node ;
}
else //if the inserted node is "+", "-", "*"
{
if ( top_node . getData (). matches ( "^[0-9]+$" )) //if the recently inserted node is a number, then just insert the "node" straight away
{
node . setNext ( top_node );
top_node = node ;
}
else //if recently inserted node is an operator, e.g. "+", "-", "*", then replace its value by the "node" value
{
if ( top_node . getNext () != null )
top_node . setData ( node . getData ());
}
}

}

//remove the most recently inserted node
public void pop ()
{
if ( top_node != null )
{
top_node = top_node . getNext ();
}
else
{
System . out . println ( "The stack is already empty" );
}

}

//get recently inserted node
public StackNode getTop () {
if ( top_node == null )
{
System . out . println ( "The stack is empty" );
}
else
{
return top_node ;
}

return null ;
}



//get and remove the most recently inserted node
public StackNode getTopandPop () {
if ( top_node == null )
{
System . out . println ( "The stack is empty" );
}
else
{
StackNode temp = top_node ;
top_node = top_node . getNext ();
return temp ;
}

return null ;
}

//This function will all the stored strings connected and return it as a single string
public String getAllNodeValues ()
{
StringBuilder all_strings = new StringBuilder (); //used to store all the strings from the stack

int i = 0 ;
StackNode temp = top_node ;
while ( temp != null )
{
all_strings . append ( temp . getData ());
temp = temp . getNext ();
}
all_strings . reverse ();
return all_strings . toString ();
}


/*This function will to implement the "=" key that process the expression entered by users and calculates a final number.
In addition to the calculation, the final number needs to be converted into a string format and output to the display.
So there are five basic steps involved below.
Steps 1, 4, 5 are already completed. Your tasks will focus on Step 2 and Step 3
*/
public void computeExp ()
{
String exp = getAllNodeValues (); //get the current expression

//Step 1: convert a string into an infix queue
MyQueue infix_queue = getInfixFromString ( getAllNodeValues ());

//Step 2: convert an infix queue into an postfix queue
MyQueue postfix_queue = infix2postfix ( infix_queue );

//Step 3: Compute the final value from the postfix queue
String final_value = processPostfix ( postfix_queue );

//Step 4: Clear the stack
this . clear ();

//Step 5: put the final_value into the stack
for ( int i = 0 ; i < final_value . length (); i ++ )
this . pushNode ( new StackNode ( final_value . substring ( i , i + 1 )));

}


/* Generate an infix expression according to an input String
* The infix expression is stored in a MyQueue variable, which is the returned value of the function */
private MyQueue getInfixFromString ( String exp )
{
//Declare queue to store infix
MyQueue infix_queue = new MyQueue (); //used as a temporary holder that extract operator and operand from exp

//Check if exp has at least one character
if ( exp . length () < 1 )
return infix_queue ;

// Check the first character if it is a negative sign
int j = 0 ;
if ( exp . substring ( 0 , 1 ). equals ( "-" )) {
j = 1 ;
}

// Check the last character if it is an operator, just drop it
if ( exp . substring ( exp . length () - 1 , exp . length ()). equals ( "+" )
|| exp . substring ( exp . length () - 1 , exp . length ()). equals ( "-" )
|| exp . substring ( exp . length () - 1 , exp . length ()). equals ( "*" )) {
exp = exp . substring ( 0 , exp . length () - 1 );
}

// Traverse all the characters and push an operand or operator into
// infix_queue
for ( int i = j ; i < exp . length (); i ++ ) {

String character = exp . substring ( i , i + 1 );

Homework is Completed By:

Writer Writer Name Amount Client Comments & Rating
Instant Homework Helper

ONLINE

Instant Homework Helper

$36

She helped me in last minute in a very reasonable price. She is a lifesaver, I got A+ grade in my homework, I will surely hire her again for my next assignments, Thumbs Up!

Order & Get This Solution Within 3 Hours in $25/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 3 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

Order & Get This Solution Within 6 Hours in $20/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 6 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

Order & Get This Solution Within 12 Hours in $15/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 12 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

6 writers have sent their proposals to do this homework:

Engineering Exam Guru
Quick Mentor
Pro Writer
Helping Engineer
Coursework Assignment Help
Top Class Engineers
Writer Writer Name Offer Chat
Engineering Exam Guru

ONLINE

Engineering Exam Guru

Being a Ph.D. in the Business field, I have been doing academic writing for the past 7 years and have a good command over writing research papers, essay, dissertations and all kinds of academic writing and proofreading.

$46 Chat With Writer
Quick Mentor

ONLINE

Quick Mentor

I am a professional and experienced writer and I have written research reports, proposals, essays, thesis and dissertations on a variety of topics.

$32 Chat With Writer
Pro Writer

ONLINE

Pro Writer

I am an experienced researcher here with master education. After reading your posting, I feel, you need an expert research writer to complete your project.Thank You

$30 Chat With Writer
Helping Engineer

ONLINE

Helping Engineer

I have assisted scholars, business persons, startups, entrepreneurs, marketers, managers etc in their, pitches, presentations, market research, business plans etc.

$28 Chat With Writer
Coursework Assignment Help

ONLINE

Coursework Assignment Help

I have read your project details and I can provide you QUALITY WORK within your given timeline and budget.

$45 Chat With Writer
Top Class Engineers

ONLINE

Top Class Engineers

As per my knowledge I can assist you in writing a perfect Planning, Marketing Research, Business Pitches, Business Proposals, Business Feasibility Reports and Content within your given deadline and budget.

$38 Chat With Writer

Let our expert academic writers to help you in achieving a+ grades in your homework, assignment, quiz or exam.

Similar Homework Questions

Analysis of kolcaba's comfort theory - Chapter 13 financial statement analysis - The more distant a star the smaller its parallax - Why do potatoes gain mass in water - Identify all bones sutures and bone markings - Introduction TO CRIMINAL JUSTICE - Thesis statement for vaccine research paper - Example of completed r40 form - Wheel and axle simple machine meaning - Homewrok - Critical thinking in everyday life examples - Case study - Shaded pole motor diagram - Yuval noah harari 21 lessons for the 21st century pdf - Writing Help - The cay study guide - In self-directed learning, trainers do not control or disseminate instruction. - Double block and bleed valve catalogue - Vanderbilt assessment scale parent - A capacity cushion is the amount of capacity less than expected demand. - Diagnosing fictional characters with psychological disorders - Insertion paddle wheel flow meter - Ana bullying in the workplace reversing a culture - Accounting chapter 8 1 application problem answers - A toccata of galuppi's - Electron configuration worksheet w311 - Dc analysis of bjt circuits - Professional growth plan university of phoenix - A raisin in the sun act 2 pdf - Emc connectrix ds 300b - Beowulf where does grendel live - Pumpkin acidic or alkaline - 2009 cafs hsc paper - Dead white males david williamson - Urgent 1- 7 hours due - Speech on alternative medicine - Art response - London anime gaming con - Coun 646 case study 3 - Meaning of dulce et decorum est - Pragmatic equivalence in translation - Hrm incident 1 i feel great - Balance between protecting and maintaining rights dementia - Conch republic electronics case - 4 indicators that a chemical change has occurred - Micro-Econ Essay - Analysis - Bandura social learning theory 1971 - Marketing communication mix of coca cola - 84.1 kg to lbs - Fartlek training program example - David lloyd share price - Daylight savings time debate - Homework problems - Strategic plan part 3 balanced scorecard - Prepare a multiple step income statement wileyplus - Sika 1 waterproofer instructions - Physics - Mathswatch clip 94 answers - Readings about the social animal 11th edition pdf - Lab report on uv vis spectroscopy - The supply curve of a pure monopolist - Determination of ethanoic acid content in vinegar - A sound of thunder questions and answers pdf - Dynamics problems and solutions - DATABASE MANAGEMENT - Macroeconomic Analysis - Economics Class Due Today - The holy spirit and the church lesson 9 - When a new manager stumbles who's at fault - Open and closed curves worksheets - The most common clinical manifestation of portal hypertension is _____ bleeding. - The miller of the dee - Http www mynextmove org explore ip - Counseling Question - Standard and poor net advantage liberty university - The last will and testament of rosalind leigh explanation - Hazardous manual handling code of practice - According to the rokeach value survey - Biographical criticism essay examples - Influences of Ancient Architecture - 6 steps of root cause analysis ihi - Poor grammar and sentence skills can - Analytical apps in sap fiori - Shrek 1 release date - Www stjohnambulance com au paymybill - Activity on arrow network diagram examples - Math algebra - E Marketing -7 - How to find velocity squared - The last mountain movie worksheet answers - Steady flow energy equation - Shelly cashman excel 2016 module 3 sam project 1a - English 2 - City of monroe continuous problem solution - Algot pull out rail - I need 10 pages Double Space about Block-chain Marketing, - Unit 4 project design implementation and evaluation - Bilingualism in america hayakawa answers - Crowned head of an oni