我已经使用javafx制作了一个计算器(我是初学者)。在我的计算机上工作正常。当我与朋友分享时,只有这样的舞台被加载...
在计算机上... [![就是这个,一个简单的计算器] [2]] [2]
作为Java程序员,这是我的第一个项目。如果您能帮我解决这个问题,那就太好了。
好吧,我已经使用Netbeans IDE创建了它,共有三个类。 Calculate.java(用于计算) JavaFXApplication8.java(扩展应用程序) 和FXMLDocumentController.java(用于控制FXML文件)
public class JavaFXApplication8 extends Application {
@Override
public void start(Stage stage) throws Exception {
stage.initStyle(StageStyle.UNIFIED);
stage.setMaxHeight(350);
stage.setMaxWidth(360);
stage.setResizable(false);
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
stage.setTitle("Calculator");
Scene scene = new Scene(root);
Image icon=new Image("Calculator-icon.png");
stage.getIcons().add(icon);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
public class FXMLDocumentController implements Initializable {
public static String a="";
private void SetLabel(ActionEvent event) {
result.setText(a);
}
@FXML
private void OnePressed(ActionEvent event) {
a=a.concat("1");
result.setText(a);
}
@FXML
private void TwoPressed(ActionEvent event) {
a=a.concat("2");
result.setText(a);
}
@FXML
private void ThreePressed(ActionEvent event) {
a=a.concat("3");
result.setText(a);
}
@FXML
private void FourPressed(ActionEvent event) {
a=a.concat("4");
result.setText(a);
}
@FXML
private void FivePressed(ActionEvent event) {
a=a.concat("5");
result.setText(a);
}
@FXML
private void SixPressed(ActionEvent event) {
a=a.concat("6");
result.setText(a);
}
@FXML
private void SevenPressed(ActionEvent event) {
a=a.concat("7");
result.setText(a);
}
@FXML
private void EightPressed(ActionEvent event) {
a=a.concat("8");
result.setText(a);
}
@FXML
private void NinePressed(ActionEvent event) {
a=a.concat("9");
result.setText(a);
}
@FXML
private void ZeroPressed(ActionEvent event) {
a=a.concat("0");
result.setText(a);
}
@FXML
private void PointPressed(ActionEvent event) {
a=a.concat(".");
result.setText(a);
}
@FXML
private void DelPressed(ActionEvent event) {
a=Calculate.Del(a);
result.setText(a);
}
@FXML
private void ACPressed(ActionEvent event) {
a="";
result.setText(a);
}
@FXML
private void AddPressed(ActionEvent event) {
a=a.concat("+");
result.setText(a);
}
@FXML
private void SubtractPressed(ActionEvent event) {
a=a.concat("-");
result.setText(a);
}
@FXML
private void MultiplyPressed(ActionEvent event) {
a=a.concat("*");
result.setText(a);
}
@FXML
private void DividePressed(ActionEvent event) {
a=a.concat("/");
result.setText(a);
}
@FXML
private void PercentPressed(ActionEvent event) {
if(a.contains("/")){
a=Calculate.divide(a);
float percent=Float.valueOf(a);
percent*=100;
result.setText(String.valueOf(percent).concat("%"));
}
else{
result.setText("Syntax error");
}
}
@FXML
private void Result(ActionEvent event) {
try {
for (int i = 1; i < a.length(); i++) {
char ch=a.charAt(i);
switch (ch) {
case '+':
a=Calculate.add(a);
result.setText(" = "+a);
break;
case '-':
a=Calculate.subtract(a);
result.setText(" = "+a);
break;
case '*':
a=Calculate.multiply(a);
result.setText(" = "+a);
break;
case '/':
a=Calculate.divide(a);
result.setText(" = "+a);
break;
default:
break;
}
}
} catch (Exception e) {
result.setText("Syntax error");
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void SetLabel(MouseEvent event) {
}
}
public class Calculate {
public static String result;
public static String add(String s){
int d=0;
String fist="";
String secon="";
char ch='+';
for (int i = 0; i < s.length(); i++) {
char ch2=s.charAt(i);
if(ch==ch2){
fist=s.substring(0, i);
secon=s.substring(i+1, s.length());
}
}
float a=Float.valueOf(fist);
float b=Float.valueOf(secon);
float c=a+b;
if(String.valueOf(c).endsWith(".0")){
result=String.valueOf(c).substring(0, String.valueOf(c).length()-2);
}
else{
result=String.valueOf(c);
}
return result;
}
public static String subtract(String s){
String fist="";
String secon="";
char ch='-';
for (int i = 0; i < s.length(); i++) {
char ch2=s.charAt(i);
if(ch==ch2){
fist=s.substring(0, i);
secon=s.substring(i+1, s.length());
}
}
float a=Float.valueOf(fist);
float b=Float.valueOf(secon);
float c=a-b;
if(String.valueOf(c).endsWith(".0")){
result=String.valueOf(c).substring(0, String.valueOf(c).length()-2);
}
else{
result=String.valueOf(c);
}
return result;
}
public static String multiply(String s){
String fist="";
String secon="";
char ch='*';
for (int i = 0; i < s.length(); i++) {
char ch2=s.charAt(i);
if(ch==ch2){
fist=s.substring(0, i);
secon=s.substring(i+1, s.length());
}
}
float a=Float.valueOf(fist);
float b=Float.valueOf(secon);
float c=a*b;
if(String.valueOf(c).endsWith(".0")){
result=String.valueOf(c).substring(0, String.valueOf(c).length()-2);
}
else{
result=String.valueOf(c);
}
return result;
}
public static String divide(String s){
String fist="";
String secon="";
char ch='/';
for (int i = 0; i < s.length(); i++) {
char ch2=s.charAt(i);
if(ch==ch2){
fist=s.substring(0, i);
secon=s.substring(i+1, s.length());
}
}
float a=Float.valueOf(fist);
float b=Float.valueOf(secon);
float c=a/b;
if(String.valueOf(c).endsWith(".0")){
result=String.valueOf(c).substring(0, String.valueOf(c).length()-2);
}
else{
result=String.valueOf(c);
}
return result;
}
public static String Del(String s){
int len=s.length();
s=s.substring(0, len-1);
return s;
}
}
它有点长,但是请仔细阅读。对于任何尝试回答它的人来说,这都很简单。