java - 在 javafx 中向我的计算器添加文本字段和标签
问题描述
我正在尝试创建一个简单的计算器,到目前为止我添加了我的计算按钮。现在我需要添加一些文本字段和描述它们的标签。
我在添加文本字段和与之关联的标签时遇到问题。
我尝试了这个示例代码,看看它是否可以工作,它给了我一个错误。
Label label1 = new Label("sample text");
TextField textField = new TextField ();
HBox hb = new HBox();
public class Simplecalculator extends Application {
private TextField tfAnnualInterestRate = new TextField();
//first textfield
Label label1 = new Label("sample text");
TextField textField = new TextField ();
HBox hb = new HBox();
@Override
public void start(Stage primaryStage) throws Exception {
int num1 = 0;
int num2 = 0;
double result = 0;
//BUTTONS
Button btn1 = new Button("Add");
Label label1 = new Label("Name:");
Button btn2 = new Button("Subtract");
Button btn3 = new Button("Multiply");
Button btn4 = new Button("Divide");
HBox hbox = new HBox();
hbox.getChildren().addAll(btn1, btn2, btn3, btn4);
BorderPane root = new BorderPane();
root.setBottom(hbox);
hbox.setAlignment(Pos.BOTTOM_CENTER);
hbox.setSpacing(10);
primaryStage.setTitle("Border Layout");
primaryStage.setScene(new Scene(root, 500, 500));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
解决方案
我无法理解这个问题。但这是JavaFX中计算器实现的代码
package FX;
import static javafx.application.Application.launch;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.geometry.Pos;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.VBox;
public class Calculator extends Application{
@Override
public void start(Stage stage) throws Exception {
TextField op =new TextField();
op.setMaxWidth(200);
TextField op2 =new TextField();
op2.setMaxWidth(200);
ComboBox<String> combo = new ComboBox<String>();
combo.setPromptText("Select Operation");
ObservableList<String> list = combo.getItems();
list.add("Add");
list.add("Subtract");
list.add("Multiply");
list.add("Divide");
Button submit=new Button("Submit");
Label lb=new Label();
lb.setTextFill(Color.BLUE);
lb.setFont(new Font("PT Narrow", 32));
//ROOT
VBox root=new VBox(8);
root.setAlignment(Pos.CENTER);
//EVENT
submit.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if((op.getText()!= null && op2.getText()!= null )&&(op.getText().matches("\\d*")&&(op2.getText().matches("\\d*")))&&combo.getValue()!=null){
float i=Float.parseFloat(op.getText());
float j=Float.parseFloat(op2.getText());
String a=combo.getValue();
if(a.equals("Add"))
lb.setText(Float.toString(i+j));
if(a.equals("Subtract"))
lb.setText(Float.toString(i-j));
if(a.equals("Multiply"))
lb.setText(Float.toString(i*j));
if(a.equals("Divide"))
lb.setText(Float.toString(i/j));
}
else{
lb.setText("INVALID INPUT");
lb.setTextFill(Color.RED);
lb.setFont(new Font("PT Narrow", 32));
}
}
});
//BACKGROUND
root.setBackground(new Background(new BackgroundFill(Color.LIGHTBLUE, CornerRadii.EMPTY, Insets.EMPTY)));
//ADDING TO ROOT GROUP
root.getChildren().addAll(op,op2,combo,submit,lb);
//SCENE
Scene scene = new Scene(root,500,500);
stage.setScene(scene);
//STAGE
stage.setTitle("Calculator");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
推荐阅读
- python - 低准确率,即预测中的 52%,而训练期间的训练和验证准确率约为 92%
- swiftui - SwiftUI 导航链接和@State 在“onAppear()”中有问题
- ios - 增加表格视图单元格高度时应用程序崩溃
- python - 刮取 CF 保护站点
- javascript - javascript承诺异步和等待问题
- r - geom_xspline:重叠线的位置偏移
- html - 如何构建响应式倾斜布局?
- node.js - “int”类型不是“String”类型的子类型
- javascript - 在不使用 FCM、One Signal、APN 等的情况下使用 Nodejs 项目推送通知
- java - Eclipse:无法在 Java Web 应用程序上编辑部署程序集