小编bas*_*aad的帖子

根据Java 8中的LocalDate.now()获取一周的第一天的日期

我希望根据LocalDate.now()得到一周中第一天的日期.使用JodaTime可以实现以下功能,但似乎已从Java 8中的新Date API中删除.

LocalDate now = LocalDate.now();
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY));
Run Code Online (Sandbox Code Playgroud)

我不能称'withDayOfWeek()',因为它不存在.

所以我的问题是:如何根据一些LocalDate获取一周中第一天的日期?

java java-8

47
推荐指数
4
解决办法
4万
查看次数

JavaFX8:如何在Tableview中创建用于选择行的侦听器?

我目前在一个屏幕上有两个tableview,这导致两个TableView都有用户可以选择的行.

现在我只希望同时选择一行(与从中选择哪个TableView无关).我正在考虑某种类型的侦听器,当选择一行时,该侦听器会取消选择另一行.这是我最初的设置:

步骤1 搜索将方法绑定到行选择的方法(没有类似的东西tableview.setOnRowSelected(method))

步骤2 创建一个类似于一种监听器的方法:当选择一行时,取消选择另一行(我知道如何做这部分)

Class1 selectedObject1 = (Class1)tableview1.getSelectionModel().getSelectedItem();
Class2 selectedObject2 = (Class2)tableview2.getSelectionModel().getSelectedItem();

if(selectedObject1 != null && selectedObject2 != null) {
   tableview1.getSelectionModel().clearSelection();
}
Run Code Online (Sandbox Code Playgroud)

所以,第一步就是问题所在.我想到了一个可以在其上创建监听器的可观察列表,然后将所选行添加到列表中.发生这种情况时,侦听器可以调用该方法.任何人都知道如何制作这个?

任何帮助是极大的赞赏.

javafx tableview javafx-8

26
推荐指数
1
解决办法
5万
查看次数

在类中使用Optional作为属性是一个好习惯吗?

我已经阅读了OptionalJava 8中的目的(遗憾的是我不记得在哪里),我很惊讶作者没有提到在类中使用an Optional作为属性.

由于我在课堂上经常使用选项,我想知道这是不是很好.或者我可以更好地使用普通属性,null它们在未设置时返回?

注意:看起来我的问题可能是基于意见的,但我觉得Optional在课堂上使用的感觉真的不是要走的路(看完上面提到的帖子后).但是,我喜欢使用它,并且找不到使用它的任何缺点.

我想举一个例子来澄清.我有一个类Transaction,它是这样构建的:

public class Transaction {

     private Optional<Customer> = Optional.empty();
     ....
Run Code Online (Sandbox Code Playgroud)

VS

public class Transaction {

     private Customer = null;
     ....
Run Code Online (Sandbox Code Playgroud)

当在一个检查Customer,我认为这是最合理的使用transaction.getCustomer().isPresent()transaction.getCustomer() != null.在我看来,第一个代码比第二个代码更清晰.

java optional java-8

26
推荐指数
2
解决办法
2万
查看次数

Swift:使用ObjectMapper将JSON字符串转换为自定义对象数组

我目前正在使用ObjectMapper for Swift(参见:https://github.com/Hearst-DD/ObjectMapper/)将StringHTTP请求转换为自定义类的对象.我从请求中获得的JSON是一个JSON数组,我想将其转换为Arrayfrom类型CustomObject.

我试过这样的:

var object = Mapper<Array<CustomObject>>().map(string: json)
Run Code Online (Sandbox Code Playgroud)

但后来我得到一个错误:Can not find member 'map'.

该怎么做?

编辑:这是我的CustomObject班级,从现在开始叫ProductVariant:

public class ProductVariant: Mappable {

    /* Attributes */

    public var id = 0
//    var size : Size = nil
    public var SKU = ""
    public var stock = 0
    public var numberOfDefects = 0

    /* Constructors */

    public init?() {
        // Empty Constructor
    }

    required public init?(_ …
Run Code Online (Sandbox Code Playgroud)

json swift

18
推荐指数
1
解决办法
2万
查看次数

在FXML中设置CheckBoxTableCell

我目前在从FXML设置CheckBoxTableCell时遇到问题.我试图将此代码转换为FXML:

tableCol.setCellValueFactory(new PropertyValueFactory<Product, Boolean>("property"));
tableCol.setCellFactory(CheckBoxTableCell.forTableColumn(toStockCol));
Run Code Online (Sandbox Code Playgroud)

其中'property'只是'Product'类的一些属性(来自'boolean'类型).这段代码工作正常.我现在尝试在FXML中设置它,如下所示:

<TableColumn text="Some Col">
    <cellValueFactory><PropertyValueFactory property="property" /></cellValueFactory>
    <cellFactory><CheckBoxTableCell editable="true" /></cellFactory>
</TableColumn>
Run Code Online (Sandbox Code Playgroud)

这不起作用,我得到以下错误(这是一个FXML LoadExeption):

Caused by: java.lang.IllegalArgumentException: Unable to coerce CheckBoxTableCell@24d62d1e[styleClass=cell indexed-cell table-cell check-box-table-cell]'null' to interface javafx.util.Callback.
at com.sun.javafx.fxml.BeanAdapter.coerce(BeanAdapter.java:495)
at com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:258)
at com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:54)
at javafx.fxml.FXMLLoader$PropertyElement.set(FXMLLoader.java:1409)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:786)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2827)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2536)
... 42 more
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我做错了什么.此外,在我看来,几乎没有关于如何使用FXML在TableView中设置CheckBox的文档.

注意:我想从FXML设置它,因为它似乎是这个的地方.我知道这可以用FXML控制器完成.而且,我只是好奇.

任何帮助是极大的赞赏!

checkbox javafx tableview fxml javafx-8

9
推荐指数
1
解决办法
1980
查看次数

根据年份和年份获取LocalDateTime

我有两个整数:yearweek.我想LocalDateTime从这两个值构造一个,其中日期代表特定年份中特定周的第一天.

我已经尝试过了:

LocalDateTime ldt = LocalDateTime.of(year, 1, 1, 0, 0).plusWeeks(week-1);
Run Code Online (Sandbox Code Playgroud)

这没有给出正确的结果,因为一年的第一天并不总是该年第一周的开始.我似乎无法弄清楚如何获得第一周的第一天.

使用Java 8中的Date和Time API有没有简单的方法呢?

注:我知道我还可以创建一个给定的答案一种解决方法在这里,但这似乎牵强.也许不是,如果是的话,请告诉我!

java datetime java-8 java-time

9
推荐指数
1
解决办法
4962
查看次数

JavaFX:RowFactory中的动态布尔绑定

这个问题更进一步,JavaFX:与多个EasyBind映射绑定的BooleanBindings停止了.

我想进一步扩展行工厂:在表1中,产品每行显示一行,因此1个产品对象可能有多行.现在我只想禁用一行,如果表2中的金额等于行的总和.例如:Product(SKU:P1)在table1中有三行(均代表金额1).如果Product2中的Product(SKU:P1)的数量= -2,则需要在table1中禁用此产品对象的2行.一个仍然需要启用,无论三者中的哪一个都无关紧要.

我现在有以下代码:

table1.setRowFactory(tv -> {
    TableRow<Product> row = new TableRow<>();        
    row.disableProperty().bind(Bindings.createBooleanBinding(
    () -> row.getItem() != null && (row.getItem().getSKU().startsWith("C") ||
        (skuAmountLookup.containsKey(row.getItem().getSKU()) &&
            -skuAmountLookup.get(row.getItem().getSKU()) <
            amounts[SKUs.indexOf(row.getItem().getSKU())] )), 
        skuAmountLookup,
        row.itemProperty()));   
    return row;
});
Run Code Online (Sandbox Code Playgroud)

在哪里skuAmountLookup:

skuAmountLookup = table2.getItems().stream().collect(
    Collectors.toMap(Product::getSKU, Product::getAmount, (x, y) -> y,
        () -> FXCollections.observableHashMap()));
Run Code Online (Sandbox Code Playgroud)

这仅在总金额为表1时禁用行.您可以更改amounts[SKUs.indexOf(row.getItem().getSKU())]0,当仅存在其中一个产品时,将禁用所有行.

我的问题是:如何更改行工厂,以便考虑另一行的disableProperty?

有关其他信息,请参阅:JavaFX:与多个EasyBind映射JavaFX 绑定的BooleanBindings :基于其他TableView在TableView中禁用多行.

javafx tablerow javafx-8

7
推荐指数
0
解决办法
655
查看次数

IDE:e(fx)clipse无法正常工作

我有以下问题:

我在Eclipse中安装了e(fx)clipse以实现JavaFX兼容性.它正确地创建了以下内容:

  • CSS和FXML文件与正确的编辑器相关联(来自'文件关联')

它运行不正常,因为它缺乏以下功能:

  • 它显示Unknown property: -fx-....我的CSS中的每个条目.
  • 它不会在FXML和CSS文件中自动完成.
  • 它一直显示:The controller 'someController' has no field 'someField',而字段是在控制器中启动的.

我已经尝试解决这个问题:

  • 将JavaFX SDK添加到项目库中.
  • 检查Eclipse的已安装软件部分,但是所有e(fx)clipse包都已正确安装.
  • 从头开始创建一个新的JavaFX项目.

这并没有解决问题.我认为它与添加库有关,因为当我添加JavaFX SDK并单击"下一步"时,我得到一个blanco屏幕,我必须单击"完成".当我这样做时,它只会增加org.eclipse.fx.ide.css.jfx8.这是正常的,还是应该有更多的包?

我正在使用Eclipse Luna 4.4.1和Java JDK 8u40.

任何帮助是极大的赞赏!

java eclipse eclipse-plugin javafx eclipse-luna

7
推荐指数
2
解决办法
3783
查看次数

输入验证失败时继续显示对话框

我目前有一个包含四个TextField的对话框,从中收集输入.当输入无法满足我的要求时,对话框应保持打开状态并显示错误消息.我目前有以下代码:

dlg.setResultConverter(dialogButton -> {

    if (dialogButton == createButtonType) {

        ArrayList<String> returnList = getInput();

        if (returnList != null) {
            return returnList;
        }
        else {
            dlg.showAndWait();
        }

    }
    return null;
});

Optional<ArrayList<String>> result = dlg.showAndWait();
result.ifPresent(customerDetails -> {

    //Use the input for something

});
Run Code Online (Sandbox Code Playgroud)

getInput()方法从TextFields获取文本并根据某些要求对其进行测试.当输入通过时,四个字符串被放入ArrayList<String>.否则,该方法返回null.如您所见,结果转换器检查方法是否返回null.如果没有,它只会返回ArrayList<String>.

但是,当验证失败时,对话框应保持打开状态.它适用dlg.showAndWait(),但缺点是它会触发错误:java.lang.IllegalStateException: Stage already visible.(它继续工作,但得到错误不是应该的方式)

我的问题是:有没有人知道如何做到这一点,而不会触发错误?

注意:我使用的是JavaFX 8(JDK 1.8.0_40),它具有内置的对话功能.

dialog javafx javafx-8

7
推荐指数
2
解决办法
5853
查看次数

绑定StringProperty时出现多线程错误

我有一个关于多线程和StringProperty绑定的问题.

我有一个类CacheManager,其中包含一个Thread更新我的缓存与服务器上的更改.现在,我想通知文本和进度的百分比(这是一个LabelProgressBar在JavaFX中).我使用public static DoubleProperty,StringProperty为此,在CacheManager类中定义.我只是像这样绑定它:

progressBar.progressProperty().bind(CacheManager.progress);
someLabel.textProperty().bind(CacheManager.status);
Run Code Online (Sandbox Code Playgroud)

现在,在Updater线程中,我更新了这些Properties.有了DoubleProperty这个工作得很好,并且ProgressBar正显示出完美的进展.但是,更新Label状态(来自的文本StringProperty)会引发错误:java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-9

现在,我的问题是:为什么DoubleProperty工作正常,而StringProperty抛出错误?他们考虑多线程有什么区别?

任何关于重新设计的想法也欢迎,非常感谢任何帮助!

java multithreading javafx javafx-8

7
推荐指数
1
解决办法
1416
查看次数