Issue
Was wondering if anyone could help me with this issue. Here is the issue: I need numbers to be shown in columns whenever I click Inc or Dec like this:
1
2
3
4
3
2
1
And when I press the Reset menu item, I need it to reset it to zero. I used the counter method, but I don't know if this is the correct way to do it.
import javafx.application.Application;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.control.Alert.*;
import javafx.scene.layout.*;
import javafx.stage.*;
import javafx.stage.FileChooser.*;
import javafx.geometry.*;
import java.util.*;
import java.io.*;
import javafx.scene.text.*;
public class StudentViewer4 extends Application implements EventHandler<ActionEvent> {
private Stage stage;
private Scene scene;
private VBox root = null;
private MenuBar mbarBar = new MenuBar();
private Menu mnuSystem = new Menu("Count");
private MenuItem miInc = new MenuItem("Inc");
private MenuItem miDec = new MenuItem("Dec");
private MenuItem miReset = new MenuItem("Reset");
private MenuItem miExit = new MenuItem("Exit");
private TextArea taData = new TextArea("0");
int counter = 0;
public static void main(String[] args) {
launch(args);
}
public void start(Stage _stage) throws Exception {
stage = _stage;
stage.setTitle("Menu Exercise");
mnuSystem.getItems().addAll(miInc, miDec, miReset, miExit);
mbarBar.getMenus().addAll(mnuSystem);
miInc.setOnAction(this);
miDec.setOnAction(this);
miReset.setOnAction(this);
miExit.setOnAction(this);
root = new VBox(mbarBar);
taData.setPrefHeight(400);
root.getChildren().add(taData);
scene = new Scene(root, 375, 175);
stage.setScene(scene);
stage.show();
}
public void handle(ActionEvent evt) {
String sourceText = "";
if (evt.getSource() instanceof Button) {
Button btn = (Button) evt.getSource();
sourceText = btn.getText();
} else if (evt.getSource() instanceof MenuItem) {
MenuItem mi = (MenuItem) evt.getSource();
sourceText = mi.getText();
} else
return;
switch (sourceText) {
case "Inc":
counter++;
taData.setText("" + counter);
break;
case "Dec":
counter--;
taData.setText("" + counter);
break;
case "Reset":
taData.setText("0");
counter = 0;
break;
case "Exit":
System.exit(0);
break;
}
}
}
Solution
Not sure if I understand the question correctly. But if you are asking about how to display all your inc/dec horizontally, you can do by appending the text.
public void handle(ActionEvent evt) {
String sourceText = "";
if (evt.getSource() instanceof Button) {
Button btn = (Button) evt.getSource();
sourceText = btn.getText();
} else if (evt.getSource() instanceof MenuItem) {
MenuItem mi = (MenuItem) evt.getSource();
sourceText = mi.getText();
} else {
return;
}
switch (sourceText) {
case "Inc":
counter++;
taData.setText(taData.getText()+" " + counter);
break;
case "Dec":
counter--;
taData.setText(taData.getText()+" " + counter);
break;
case "Reset":
taData.setText("0");
counter = 0;
break;
case "Exit":
System.exit(0);
break;
}
}
Answered By - Sai Dandem