所以我基本上有表格视图,那里有一些列。其中一列(价格)由字符串组成,实际上表示双精度。唯一的原因是,因为我希望双倍,例如,因为 1 将显示为 1.00。但是正因为如此,我不能正确使用默认排序(排序双精度)。我可以以某种方式更改它,所以当我按下该按钮时,它会将它们排序为双倍类型?
如果需要,请在此处编码:
import java.text.NumberFormat;
import java.text.ParseException;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
@SuppressWarnings("unused")
public class Store_DateBase extends Application {
Stage window;
Scene scene;
Button addButton, deleteButton;
TableView<Store_Products> table;
TextField nameInput, priceInput, quantityInput;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("Store sortiment!");
// name column
TableColumn<Store_Products, String> nameColumn = new TableColumn<>("Name");
nameColumn.setMinWidth(200);
nameColumn.setCellValueFactory(new PropertyValueFactory<Store_Products, String>("name"));
// price column
TableColumn<Store_Products, String> priceColumn = new TableColumn<>("Price");
priceColumn.setMinWidth(200);
priceColumn.setStyle("-fx-alignment: CENTER;");
priceColumn.setCellValueFactory(new PropertyValueFactory<Store_Products, String>("price"));
// Quantity column\
TableColumn<Store_Products, Integer> intColumn = new TableColumn<>("Quantity");
intColumn.setMinWidth(200);
intColumn.setStyle("-fx-alignment: CENTER;");
intColumn.setCellValueFactory(new PropertyValueFactory<Store_Products, Integer>("quantity"));
// name inputs
nameInput = new TextField();
nameInput.setPromptText("Write a name");
nameInput.setMinWidth(150);
// price inputs
priceInput = new TextField();
priceInput.setPromptText("Write a price");
priceInput.setMinWidth(100);
//quantityInputs
quantityInput = new TextField();
quantityInput.setPromptText("Write a quantity");
quantityInput.setMinWidth(100);
// buttons
addButton = new Button("Add");
addButton.setOnAction(e -> addMeth());
deleteButton = new Button("Delete");
deleteButton.setOnAction(e -> deleteMeth());
HBox hBox = new HBox();
hBox.setPadding(new Insets(10, 10, 10, 10));
hBox.setSpacing(10);
hBox.getChildren().addAll(nameInput, priceInput, quantityInput, addButton, deleteButton);
table = new TableView<>();
table.setItems(getProduct());
table.getColumns().addAll(nameColumn, priceColumn, intColumn);
VBox layout = new VBox(10);
layout.setPadding(new Insets(20, 20, 20, 20));
layout.getChildren().addAll(table, hBox);
scene = new Scene(layout);
window.setScene(scene);
window.show();
}
// delete button clicked
private void deleteMeth() {
ObservableList<Store_Products> productSelected, allProducts;
allProducts = table.getItems();
productSelected = table.getSelectionModel().getSelectedItems();
// for all products what are selected remove them from table.
productSelected.forEach(allProducts::remove);
}
// add button clicked
private void addMeth() {
Store_Products produkts = new Store_Products();
// get name
produkts.setName(nameInput.getText());
// get price
double price = PriceValue(produkts);
if (price != 0)
produkts.setPrice(price);
else
return;
// get quantity
int quantity = QuantityValue(produkts);
if (quantity != 0)
produkts.setQuantity(quantity);
else
return;
// add to the table
table.getItems().add(produkts);
// clear what is written after push "addButton"
nameInput.clear();
priceInput.clear();
quantityInput.clear();
}
private double PriceValue(Store_Products price) {
try {
String value = priceInput.getText().replaceAll(",", ".");
double doubleValue = Double.parseDouble(value);
return doubleValue;
} catch (Exception e) {
return 0;
}
}
private int QuantityValue(Store_Products quantity) {
try {
int value = Integer.parseInt(quantityInput.getText());
return value;
} catch (Exception e) {
return 0;
}
}
// get default products
public ObservableList<Store_Products> getProduct() {
ObservableList<Store_Products> products = FXCollections.observableArrayList();
products.add(new Store_Products("Laptop", 850.00, 27));
products.add(new Store_Products("Desktop computer", 499.99, 66));
products.add(new Store_Products("Proccesor", 50.00, 55));
products.add(new Store_Products("Screen", 119.99, 22));
products.add(new Store_Products("keyboard", 20.00, 270));
products.add(new Store_Products("mouse", 16.99, 60));
products.add(new Store_Products("mic", 5.90, 101));
return products;
}
}
使列成为< code>TableColumn
TableColumn<StoreProduct, Number> priceColumn = new TableColumn<>("Price");
// may need to update the properties in StoreProduct to have the correct type
// (but likely will be more convenient anyway)
priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));
priceColumn.setCellFactory(tc -> new TableCell<StoreProduct, Number>() {
@Override
protected void updateItem(Number price, boolean empty) {
if (empty) {
setText("");
} else {
setText(String.format("%.2f", price.doubleValue()));
}
}
});
这将适用于,例如。
public class StoreProduct {
private final DoubleProperty price = new SimpleDoubleProperty() ;
public DoubleProperty priceProperty() {
return price ;
}
public final double getPrice() {
return priceProperty().get();
}
public final void setPrice(double price) {
priceProperty().set(price);
}
// other properties...
}
我的应用程序中有一个ListView,我想对条目进行排序。我还希望列表自动排序,如果一个新的条目被添加。 为此,我使用sortedlist。Java API表示“ObservableList中的所有更改都会立即传播到SortedList中”。
我是一名Java初学者,我正在基于Stackowerflow上的一个示例构建一个简单的购物清单程序: 使用用户输入将对象添加到ArrayList的方法 用户输入(名称价格)将商品添加到购物清单中。 现在我希望输出显示通过使用即可比按价格(上升)排序的对象,但不知道如何将其添加到代码中。我真的是个初学者,所以我希望我写的东西有意义。 非常感谢。 代码如下:
问题内容: 在这一点上,这已经是一个老问题了,我可能已经阅读了有关SO的所有相关主题。 但是要点。我需要一些建议或更正吗? 出于某种原因,我们有两种可生成的Jsons: 和 对象和数组。还有其他参数,但在这里无关紧要。每个请求的“ id”都不同。有时是userId,PortfolioId等。因此我得到“ id”并将其传递给相关的var。 很长一段时间我一直在处理第一种情况。并这样创建POJO: 数
问题内容: 我有一个双,其值是10,000,000.00(千万)。我必须将其转换为。当使用该方法时,我会得到 “ 1.0E7”,它遵循规范是正确的。不幸的是,我需要“ 10,000,000.00”(或等价的语言,具体取决于语言环境)。 如何做到这一点? 问题答案: 尝试之一 NumberFormat http://java.sun.com/javase/6/docs/api/java/text/N
问题内容: 给定python字符串列表,如何自动将其转换为正确的类型?意思是,如果我有: 我希望将其转换为列表 其中第一个元素是stuntng,第二个元素是int,第三个元素是float,第四个元素是int。 我怎样才能做到这一点?谢谢。 问题答案: import ast
方法(下面)是一个类型,我用作参数的类是一个。我想知道我选角的方式是否管用: 这就是方法: 此URL指向类: 我把它放进了粘贴箱,因为课程太长了。