You are on page 1of 11

Anshdeep Singh Kapula 20BCE0797

Q) Develop a JavaFX application to create 3 scroll bars to give the count of students who scored
marks in Java CAT-I within the ranges 0-10,11-20 and 21-30 (min and max values should be 0 and
30). Draw a histogram representing these counts. When the mouse is placed over a particular bar in
the histogram, information regarding it should be displayed in a textfield (count and percentage of
that count etc). Color of the histogram bars should be changed as per the choice given through
radiobuttons.

JavaFX Code
package mypackage;

import javafx.scene.shape.*;

import javafx.scene.control.*;

import javafx.scene.layout.*;

import javafx.scene.input.*;

import javafx.geometry.*;

import javafx.beans.value.*;

import javafx.application.Application;

import static javafx.application.Application.launch;

import javafx.scene.Scene;

import javafx.stage.Stage;

import javafx.scene.paint.Color;

public class Histogram extends Application {

public static void main(String[] args) {

launch(args);

public void start(Stage primaryStage) {

primaryStage.setTitle("Hello World!");

Pane root = new Pane();

Scene scene = new Scene(root, 600,600);


Anshdeep Singh Kapula 20BCE0797

ScrollBar sb1 = new ScrollBar();

sb1.setMin(0);

sb1.setMax(60);

sb1.setBlockIncrement(1);

sb1.setUnitIncrement(1);

sb1.setOrientation(Orientation.VERTICAL);

sb1.setLayoutX(200);

sb1.setLayoutY(50);

sb1.setValue(60);

ScrollBar sb2 = new ScrollBar();

sb2.setMin(0);

sb2.setMax(60);

sb2.setBlockIncrement(1);

sb2.setUnitIncrement(1);

sb2.setOrientation(Orientation.VERTICAL);

sb2.setLayoutX(300);

sb2.setLayoutY(50);

sb2.setValue(60);

ScrollBar sb3 = new ScrollBar();

sb3.setMin(0);

sb3.setMax(60);

sb3.setBlockIncrement(1);

sb3.setUnitIncrement(1);

sb3.setOrientation(Orientation.VERTICAL);

sb3.setLayoutX(400);

sb3.setLayoutY(50);

sb3.setValue(60);

Rectangle r1 = new Rectangle(190, 395, 40, 0);


Anshdeep Singh Kapula 20BCE0797

Rectangle r2 = new Rectangle(290, 395, 40, 0);

Rectangle r3 = new Rectangle(390, 395, 40, 0);

Line y = new Line(150, 180, 150, 395);

Line x = new Line(150, 395, 500, 395);

Label l1 = new Label("0");

l1.setLayoutX(135);

l1.setLayoutY(390-10);

Label l2 = new Label("10");

l2.setLayoutX(130);

l2.setLayoutY(360-5);

Label l3 = new Label("20");

l3.setLayoutX(130);

l3.setLayoutY(330-5);

Label l4 = new Label("30");

l4.setLayoutX(130);

l4.setLayoutY(300-5);

Label l5 = new Label("40");

l5.setLayoutX(130);

l5.setLayoutY(270-5);

Label l6 = new Label("50");

l6.setLayoutX(130);

l6.setLayoutY(240-5);

Label l7 = new Label("60");


Anshdeep Singh Kapula 20BCE0797

l7.setLayoutX(130);

l7.setLayoutY(210-5);

Label xLabel1 = new Label("0-10");

xLabel1.setLayoutX(197);

xLabel1.setLayoutY(410);

Label xLabel2 = new Label("11-20");

xLabel2.setLayoutX(297);

xLabel2.setLayoutY(410);

Label xLabel3 = new Label("21-30");

xLabel3.setLayoutX(397);

xLabel3.setLayoutY(410);

sb1.valueProperty().addListener(new ChangeListener<Number>(){

public void changed(ObservableValue ov, Number oldValue, Number newValue){

int val = 60 - newValue.intValue();

val = (185/60) * val;

r1.setHeight(val);

r1.setY(395 - val);

});

sb2.valueProperty().addListener(new ChangeListener<Number>(){

public void changed(ObservableValue ov, Number oldValue, Number newValue){


Anshdeep Singh Kapula 20BCE0797

int val = 60 - newValue.intValue();

val = (185/60) * val;

r2.setHeight(val);

r2.setY(395 - val);

});

sb3.valueProperty().addListener(new ChangeListener<Number>(){

public void changed(ObservableValue ov, Number oldValue, Number newValue){

int val = 60 - newValue.intValue();

val = (185/60) * val;

r3.setHeight(val);

r3.setY(395 - val);

});

RadioButton r11 = new RadioButton("Red");

r11.setLayoutX(190);

r11.setLayoutY(450);

RadioButton r12 = new RadioButton("Blue");

r12.setLayoutX(190);

r12.setLayoutY(470);

RadioButton r13 = new RadioButton("Green");

r13.setLayoutX(190);

r13.setLayoutY(490);
Anshdeep Singh Kapula 20BCE0797

RadioButton r21 = new RadioButton("Red");

r21.setLayoutX(290);

r21.setLayoutY(450);

RadioButton r22 = new RadioButton("Blue");

r22.setLayoutX(290);

r22.setLayoutY(470);

RadioButton r23 = new RadioButton("Green");

r23.setLayoutX(290);

r23.setLayoutY(490);

RadioButton r31 = new RadioButton("Red");

r31.setLayoutX(390);

r31.setLayoutY(450);

RadioButton r32 = new RadioButton("Blue");

r32.setLayoutX(390);

r32.setLayoutY(470);

RadioButton r33 = new RadioButton("Green");

r33.setLayoutX(390);

r33.setLayoutY(490);

ToggleGroup t1 = new ToggleGroup();

r11.setToggleGroup(t1);

r12.setToggleGroup(t1);

r13.setToggleGroup(t1);

ToggleGroup t2 = new ToggleGroup();


Anshdeep Singh Kapula 20BCE0797

r21.setToggleGroup(t2);

r22.setToggleGroup(t2);

r23.setToggleGroup(t2);

ToggleGroup t3 = new ToggleGroup();

r31.setToggleGroup(t3);

r32.setToggleGroup(t3);

r33.setToggleGroup(t3);

t1.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){

public void changed (ObservableValue ov, Toggle oldValue, Toggle newValue){

RadioButton rb = (RadioButton) newValue;

String selected = rb.getText();

if(selected.equals("Red"))

r1.setFill(Color.RED);

else

if(selected.equals("Green"))

r1.setFill(Color.GREEN);

else

if(selected.equals("Blue"))

r1.setFill(Color.BLUE);

});

t2.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){
Anshdeep Singh Kapula 20BCE0797

public void changed (ObservableValue ov, Toggle oldValue, Toggle newValue){

RadioButton rb = (RadioButton) newValue;

String selected = rb.getText();

if(selected.equals("Red"))

r2.setFill(Color.RED);

else

if(selected.equals("Green"))

r2.setFill(Color.GREEN);

else

if(selected.equals("Blue"))

r2.setFill(Color.BLUE);

});

t3.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){

public void changed (ObservableValue ov, Toggle oldValue, Toggle newValue){

RadioButton rb = (RadioButton) newValue;

String selected = rb.getText();

if(selected.equals("Red"))

r3.setFill(Color.RED);

else

if(selected.equals("Green"))

r3.setFill(Color.GREEN);
Anshdeep Singh Kapula 20BCE0797

else

if(selected.equals("Blue"))

r3.setFill(Color.BLUE);

});

Label hover1 = new Label();

r1.addEventHandler(MouseEvent.ANY, (MouseEvent me)->{

root.getChildren().remove(hover1);

int count = 60 - (int)sb1.getValue();

double percentage = count*100/60;

hover1.setText("Count = " + count + "\nPercentage = " + percentage);

hover1.setLayoutX(170);

hover1.setLayoutY(170);

root.getChildren().addAll(hover1);

});

r2.addEventHandler(MouseEvent.ANY, (MouseEvent me)->{

root.getChildren().remove(hover1);

int count = 60 - (int)sb2.getValue();

double percentage = count*100/60;

hover1.setText("Count = " + count + "\nPercentage = " + percentage);

hover1.setLayoutX(270);

hover1.setLayoutY(170);

root.getChildren().addAll(hover1);
Anshdeep Singh Kapula 20BCE0797

});

r3.addEventHandler(MouseEvent.ANY, (MouseEvent me)->{

root.getChildren().remove(hover1);

int count = 60 - (int)sb3.getValue();

double percentage = count*100/60;

hover1.setText("Count = " + count + "\nPercentage = " + percentage);

hover1.setLayoutX(370);

hover1.setLayoutY(170);

root.getChildren().addAll(hover1);

});

Label instruction = new Label("Use the scrollbars to adjust the bar of each class in the
histogram");

instruction.setLayoutX(150);

instruction.setLayoutY(10);

root.getChildren().addAll(sb1, sb2, sb3, r1, r2, r3, x, y, l1, l2, l3, l4, l5, l6, l7, xLabel1, xLabel2,
xLabel3, instruction);

root.getChildren().addAll(r11, r12, r13);

root.getChildren().addAll(r21, r22, r23);

root.getChildren().addAll(r31, r32, r33);

primaryStage.setScene(scene);

primaryStage.show();

}
Anshdeep Singh Kapula 20BCE0797

Screenshots:-

You might also like