- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当且仅当所有 TextFileds 被填充并且 RadioButtons 被选择时, else 部分才必须执行。否则会弹出警报。但是,我的代码没有按预期工作。
输入所有值后,警报消息会弹出,您可以在图像中看到。单击下面的图像打开输出图像。请帮忙。
样本.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<Pane fx:id="pane" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="485.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<Label layoutX="234.0" layoutY="14.0" prefHeight="27.0" prefWidth="133.0" text="Bismillah Fruits" textFill="#f20404">
<font>
<Font name="System Bold" size="18.0" />
</font>
</Label>
<Label layoutX="56.0" layoutY="72.0" text="Name:">
<font>
<Font name="System Italic" size="14.0" />
</font>
</Label>
<TextField fx:id="name" layoutX="109.0" layoutY="69.0" promptText="Please Enter Name" />
<DatePicker fx:id="date" layoutX="411.0" layoutY="69.0" promptText="Select Date" />
<ChoiceBox fx:id="choiceBox1" layoutX="40.0" layoutY="153.0" prefHeight="25.0" prefWidth="112.0" />
<TextField fx:id="kgs1" layoutX="160.0" layoutY="153.0" promptText="value" />
<TextField fx:id="mul1" layoutX="331.0" layoutY="153.0" prefHeight="25.0" prefWidth="36.0" promptText="box" />
<ChoiceBox fx:id="choiceBox2" layoutX="38.0" layoutY="198.0" prefHeight="25.0" prefWidth="112.0" />
<TextField fx:id="kgs2" layoutX="160.0" layoutY="198.0" promptText="value" />
<TextField fx:id="mul2" layoutX="331.0" layoutY="198.0" prefHeight="25.0" prefWidth="36.0" promptText="box" />
<ChoiceBox fx:id="choiceBox3" layoutX="40.0" layoutY="236.0" prefHeight="25.0" prefWidth="112.0" />
<TextField fx:id="kgs3" layoutX="160.0" layoutY="236.0" promptText="value" />
<TextField fx:id="mul3" layoutX="331.0" layoutY="236.0" prefHeight="25.0" prefWidth="36.0" promptText="box" />
<Separator layoutX="411.0" layoutY="131.0" orientation="VERTICAL" prefHeight="300.0" prefWidth="4.0" />
<Label layoutX="485.0" layoutY="122.0" text="Total" />
<Label layoutX="155.0" layoutY="122.0" text="Details">
<font>
<Font name="System Italic" size="12.0" />
</font>
</Label>
<Separator layoutX="26.0" layoutY="138.0" prefHeight="4.0" prefWidth="543.0" />
<Label layoutX="315.0" layoutY="157.0" text="x" />
<Label layoutX="315.0" layoutY="202.0" prefHeight="17.0" prefWidth="6.0" text="x" />
<Label layoutX="315.0" layoutY="240.0" text="x" />
<Label fx:id="value1" alignment="CENTER" contentDisplay="CENTER" layoutX="495.0" layoutY="157.0" text="0" />
<Label fx:id="value2" alignment="CENTER" contentDisplay="CENTER" layoutX="495.0" layoutY="202.0" text="0" />
<Label fx:id="value3" alignment="CENTER" contentDisplay="CENTER" layoutX="495.0" layoutY="240.0" text="0" />
<Separator layoutX="421.0" layoutY="419.0" prefHeight="4.0" prefWidth="167.0" />
<Label layoutX="43.0" layoutY="335.0" text="Advance:" />
<Label layoutX="43.0" layoutY="368.0" text="Coolie:" />
<Label layoutX="43.0" layoutY="403.0" text="Market:" />
<Label layoutX="42.0" layoutY="303.0" text="Commission:" />
<RadioButton fx:id="eight" layoutX="167.0" layoutY="303.0" mnemonicParsing="false" text="8%" />
<Label layoutX="211.0" layoutY="303.0" text="or" />
<RadioButton fx:id="ten" layoutX="228.0" layoutY="303.0" mnemonicParsing="false" text="10%" />
<Label fx:id="value4" alignment="CENTER" contentDisplay="CENTER" layoutX="469.0" layoutY="303.0" text="Commission" />
<TextField fx:id="advance" layoutX="160.0" layoutY="331.0" promptText="Advance" />
<TextField fx:id="coolie" layoutX="160.0" layoutY="364.0" prefHeight="25.0" prefWidth="64.0" promptText="Coolie" />
<Label layoutX="230.0" layoutY="368.0" text="x" />
<RadioButton fx:id="three" layoutX="240.0" layoutY="368.0" mnemonicParsing="false" text="3" />
<Label layoutX="270.0" layoutY="368.0" text="or" />
<RadioButton fx:id="five" layoutX="285.0" layoutY="368.0" mnemonicParsing="false" text="5" />
<Label fx:id="value5" alignment="CENTER" contentDisplay="CENTER" layoutX="480.0" layoutY="368.0" text="Coolie" />
<TextField fx:id="market" layoutX="160.0" layoutY="399.0" promptText="Market charge" />
<Label fx:id="total" alignment="CENTER" contentDisplay="CENTER" layoutX="485.0" layoutY="423.0" text="Total" />
<Separator layoutX="425.0" layoutY="333.0" prefHeight="4.0" prefWidth="167.0" />
<Separator layoutX="425.0" layoutY="280.0" prefHeight="4.0" prefWidth="167.0" />
<Button fx:id="cal" layoutX="208.0" layoutY="440.0" mnemonicParsing="false" text="Calculate" />
</children>
</Pane>
和controller.java
package sample;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.scene.layout.Pane;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable {
private int total43;
private static final String ORANGE = "Orange";
private static final String APPLES = "Apples";
private static final String MANGO = "Mango";
private static final String CORN = "Corn";
@FXML
public Pane pane;
@FXML
public TextField name;
@FXML
public DatePicker date;
@FXML
public TextField kgs1, kgs2, kgs3, mul1, mul2, mul3, advance, coolie, market;
@FXML
public Label value1, value2, value3, value4, value5, total;
@FXML
public Button cal;
@FXML
public ChoiceBox choiceBox1, choiceBox2, choiceBox3;
@FXML
public RadioButton three, five, eight, ten;
Alert alert = new Alert(Alert.AlertType.INFORMATION);
private ToggleGroup toggleGroup, toggleGroup2;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
System.out.println("Inside initialize.");
choiceBox1.getItems().add(ORANGE);
choiceBox1.getItems().add(APPLES);
choiceBox1.getItems().add(MANGO);
choiceBox1.getItems().add(CORN);
System.out.println("choiceBox2 items added.");
choiceBox2.getItems().add(ORANGE);
choiceBox2.getItems().add(APPLES);
choiceBox2.getItems().add(MANGO);
choiceBox2.getItems().add(CORN);
System.out.println("choiceBox3 items added.");
choiceBox3.getItems().add(ORANGE);
choiceBox3.getItems().add(APPLES);
choiceBox3.getItems().add(MANGO);
choiceBox3.getItems().add(CORN);
choiceBox1.setValue(ORANGE);
choiceBox1.getSelectionModel().selectedItemProperty().addListener((observableValue, o, t1) -> {
System.out.println("choice1 clicked");
});
choiceBox2.setValue(APPLES);
choiceBox2.getSelectionModel().selectedItemProperty().addListener((observableValue, o, t1) -> {
System.out.println("choice2 clicked");
});
choiceBox3.setValue(MANGO);
choiceBox3.getSelectionModel().selectedItemProperty().addListener((observableValue, o, t1) -> {
System.out.println("choice3 clicked");
});
//
System.out.println("ToggleGroup 8 or 10 object creation begin.");
toggleGroup = new ToggleGroup();
System.out.println("ToggleGroup 8 or 10 object created.");
eight.setToggleGroup(toggleGroup);
ten.setToggleGroup(toggleGroup);
//
System.out.println("ToggleGroup2 3 or 5 object creation begin.");
toggleGroup2 = new ToggleGroup();
System.out.println("ToggleGroup2 3 or 5 object created.");
three.setToggleGroup(toggleGroup2);
five.setToggleGroup(toggleGroup2);
cal.setOnAction(actionEvent -> {
System.out.println("cal function called. ");
cal();
System.out.println("cal function ended. ");
});
}
public boolean isTrue(){
if (!(value1.getText().trim().isEmpty() && value2.getText().trim().isEmpty() &&
value3.getText().trim().isEmpty() && mul1.getText().trim().isEmpty() &&
mul2.getText().trim().isEmpty() && mul3.getText().trim().isEmpty() &&
advance.getText().trim().isEmpty() && coolie.getText().trim().isEmpty() &&
market.getText().trim().isEmpty() && name.getText().trim().isEmpty() &&
date.getValue() != null && toggleGroup.getSelectedToggle().isSelected() &&
toggleGroup2.getSelectedToggle().isSelected())) {
System.out.println("inside if ");
alert.setTitle("Information");
System.out.println("alert.setTitle(Error)");
alert.setHeaderText("Error Occurred");
System.out.println("alert.setHeaderText(Error Occurred);");
alert.setContentText("Please Enter All Values");
System.out.println("alert.setContentText(Please Enter All Values)");
alert.setAlertType(Alert.AlertType.INFORMATION);
System.out.println("alert.setAlertType(Alert.AlertType.ERROR)");
alert.show();
System.out.println("alert.show()");
return false;
}
return true;
}
private void cal() {
float comm, comm2;
if (isTrue()) {
System.out.println("Else begins. ");
value1.setText(String.valueOf(Integer.parseInt(kgs1.getText()) * Integer.parseInt(mul1.getText())));
value2.setText(String.valueOf(Integer.parseInt(kgs2.getText()) * Integer.parseInt(mul2.getText())));
value3.setText(String.valueOf(Integer.parseInt(kgs3.getText()) * Integer.parseInt(mul3.getText())));
total43 = Integer.parseInt(value1.getText()) +
Integer.parseInt(value2.getText()) +
Integer.parseInt(value3.getText());
//
total.setText(String.valueOf(Integer.parseInt(value1.getText()) +
Integer.parseInt(value2.getText()) +
Integer.parseInt(value3.getText())));
System.out.println("Total value " + total43);
// -------------------------------------
System.out.println("8 or 10 if begin.");
if (eight.isSelected()) {
comm = (total43 * 8) / 100;
comm2 = total43 - comm;
value4.setText(String.valueOf(comm2));
} else {
comm = (total43 * 10) / 100;
comm2 = total43 - comm;
value4.setText(String.valueOf(comm2));
}
System.out.println("8 or 10 if closed.");
System.out.println("advance " + advance.getText());
//
System.out.println("3 or 5 if begin.");
if (three.isSelected()) {
value5.setText(String.valueOf(Integer.parseInt(coolie.getText()) * 3));
} else
value5.setText(String.valueOf(Integer.parseInt(coolie.getText()) * 5));
System.out.println("3 or 5 if closed.");
//
System.out.println("market value.");
System.out.println("market value: " + market.getText());
}
}
}
After entering all the values the alert message till popping up.预先感谢您。
最佳答案
您正在输入if
,如果不是所有条件都true
。例如。如果至少有一个 TextField
为非空,则 ()
内的表达式为 false
,导致条件计算结果为 真实
。您需要删除否定并将 ands (&&
) 替换为 ors ||
。
不过,我建议减少这段代码的重复性。如果将这些元素添加到集合或数组中,您可以简单地迭代它们:
private List<TextField> textInputs;
private List<ToggleGroup> toggleGroups;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
...
textInputs = Arrays.asList(value1, value2, value3, mul1, mul2, mul3, advance, coolie, market, name);
// after initializing the ToggleGroups
toggleGroups = Arrays.asList(toggleGroup, toggleGroup2);
}
...
public boolean isTrue() { // choose a better name for this
boolean valid = (date.getValue() != null);
if (valid) {
for (TextField tf : textInputs) {
if (tf.getText().trim().isEmpty()) {
valid = false;
break;
}
}
if (valid) {
for (ToggleGroup tg : toggleGroups) {
if (tg.getSelectedToggle() == null) {
valid = false;
break;
}
}
}
}
if (!valid) {
// show alert here...
}
return valid;
}
这样您就可以避免一遍又一遍地重复检查,从而可以更轻松地一次更改所有 TextField
s/ToggleGroup
s 的检查。请注意,如果没有一个 Toggle
处于选定状态,则 ToggleGroup
的选定切换为 null
;在这种情况下,您的代码将产生 NPE。
我确实建议将您的 Pane
替换为 GridPane
顺便说一句:GridPane
能够根据字体处理不同的控件尺寸(大小)所使用的值在操作系统之间可能有所不同。 Pane
根本无法处理这个问题;它只是使用独立于其子级大小的绝对位置。
关于java - 如何检查是否所有文本字段和单选按钮都被选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098730/
谁知道现成的脚本或插件提供: -Shift click for check/uncheck all in range -CTRL click to select or unselect all 这可以
如果您点击按钮,它会打开 3 个复选框(一个选择全部,还有两个子输入)。 我想做的是,如果用户点击Centro de dia,输入将保持选中状态,而另一个(在本例中为button)会被选中未经检查。如
我正在学习 Wes Bos 30 天 Javascript 类(class),在一项可选功能上,我需要在底部添加三个按钮:清除全部、选中全部和取消选中全部。这是代码
自从升级到 jquery 1.9 以来,我的脚本停止了检查/取消选中复选框的工作。 我有一个主复选框,用于控制选择/检查表中的复选框列表。升级到新的 jquery 版本后,仅最初单击“检查全部”复选框
我有一个带有复选框列的表格,我添加了以下内容: 这是我的 jQuery 函数: jQuery(document).ready(function() { jQuery('#selec
这是我所拥有的(此处使用 Twitter bootstrap) #html fdsfdsfds
这个问题已经有答案了: Setting "checked" for a checkbox with jQuery (44 个回答) 已关闭 6 年前。 当我单击“问题”时,必须选择/取消选择两个复选框
我有这个表格: First Second Third --- Option1 Option2 有没有办法(使用 JS/jQuery)我可以在 First 时将 first
我试图有一个复选框来选中/取消选中所有其他复选框。 我正在使用此代码: $("#checkall").toggle( function () { $(".kselItems
在复选框列表中,应该可以通过按下按钮来选中/取消选中所有项目。但是下面的代码只能部分工作: All None
当我执行代码时,我得到 4 个复选框,我检查/选择了所有 4 个复选框,当我尝试调试代码时,它确实算作我有 4 个复选框,但所有 4 个复选框都被选中 = false。 我在代码中缺少什么? Li
$("input[type='radio']").each(function() { if ($(this).is(":checked")) { $(this).css('backgrou
我无法使用此 javascript 函数。任何帮助将不胜感激! No function yesno(thecheckbox, thelabel){ var ch
这是我的第一个 js 脚本,请对我温柔点:) 问题是当我点击选中所有按钮时,所有复选框都被选中但它不会将值写入文本区域,如果我单击单个复选框然后值被添加/删除并且没关系,我只是卡住了在那个选中所有/取
我试图在复选框处于选中状态或未选中状态时传递一个值。 但是,它似乎没有通过非检查状态。我正在使用的代码如下: if (document.getElementById('PRODUCT_REVIEW_E
目前我正在使用它来选中/取消选中表单中的所有复选框。 checked=false; function checkedAll (frm1) { var aa= document.getElem
我有 2 个单选按钮,当我单击其中一个按钮时,我会看到下拉菜单,必须在其中选择金额。 到目前为止,我能够检查/取消检查它们,但问题是,当我取消检查单选按钮下拉列表时,不会再次隐藏。 我不太擅长 Jav
HTML: Select All 1. 2. 3. 4. 5. JS: function test(click
我需要为每套图书设置一个选中/取消选中全部复选框。它还应该加上总价和重量。到目前为止,我只能选中每个框,它会很好地添加值,但是一旦我添加一个函数来选中所有框,一切都会停止工作。 //check all
我正在尝试根据来自 mysql 数据库的数据来选中或取消选中复选框。我使用nusoap webservice/webclient读取数据,数据值可以是1或0。 我的代码是: functio
我是一名优秀的程序员,十分优秀!