小编hko*_*sha的帖子

如何使JavaFX TableView单元格可编辑?

有很多教程,并且通过扩展JavaFX单元以使它们可编辑来实现这一目标的许多建议.一个好的是这个stackoverflow问题.
官方教程使用方法调用来创建回调,而无需编写所有代码,通过调用

lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
Run Code Online (Sandbox Code Playgroud)

但是当我在我的代码中执行此操作时(FormTokens是我的"模型"):

// At beginning of class declaration
@FXML private TableColumn<FormTokens, String> valuColumn;

// Later at initialization
valuColumn.setCellFactory(TextFieldTableCell.forTableColumn());
Run Code Online (Sandbox Code Playgroud)

编译说:

方法setCellFactory( Callback<TableColumn<FormTokens,String>,TableCell<FormTokens,String>>)
在类型TableColumn<FormTokens,String>
中不适用于参数
(Callback<TableColumn<Object,String>,TableCell<Object,String>>)

如果我删除上面提到的方法调用,除了TableView单元格不可编辑外,一切正常.我究竟做错了什么?

编辑:我刚刚发现:Javafx TableView无法编辑但是没有解决方案.我该如何投Callback<TableColumn<Object,...Callback<TableColumn<FormTokens,...

tableview javafx-2

8
推荐指数
1
解决办法
3万
查看次数

将基于Guice的项目迁移到Dagger

我有一个使用香草Guice的Guice项目; 没有Assisted-Inject,没有AOP,没有额外的插件扩展Guice等.要在Android上更轻松地运行它,Dagger似乎是一个更好的解决方案.每个类都有一个依赖项和一个带@Inject注释的构造函数.不使用场或方法注入.

模块非常简单(使Guice成为一种过度杀伤)并且大多包含如下所示的绑定:

class SomethingModule extends AbstractModule {

  protected void configure() {
    Bind(Handler.class)
      .annotatedWith(Names.named("something"))
      .to(SomeImplementation.class);
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

后来使用如下:

Injector inj = Guice.createInjector(new SomethingModule());
... = inj.getInstance(SampleInterface.class);
// and rest of the code.
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法理解Daggers的术语.您能指导我将Guice模块直接转换/转换为Dagger模块吗?

匕首有:

  • Dagger的组件.
  • Dagger的模块.
  • @Provides
  • @Inject

Guice有:

  • @Inject
  • @Named (或任何自定义注释,如果正确实施).
  • 我们的模块扩展AbstractModule.
  • @Provides 在模块中.
  • Guice Injector是从模块创建的.

这些如何相关?

更新:除了EpicPandaForce的不错答案之外,这些幻灯片也可以提供帮助.

java guice dagger-2

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

将 php 5.4 移植到 5.3

是否有任何自动化工具可以将 php 5.4 脚本转换回 5.3?大多数情况下,新样式数组会导致问题。

这个:

<?php
$x = [1, 2, 3];
$y = [
  'a' => [1,2],
  'b' => 'c',
];
function ff($x = []) { ...}
Run Code Online (Sandbox Code Playgroud)

应该转换成这样:

<?php
$x = array(1, 2, 3);
$y = array(
  'a' => array(1,2),
  'b' => 'c',
);
function ff($x = array()) { ...}
Run Code Online (Sandbox Code Playgroud)

其他向后兼容性问题只是少数问题,可以手动修复。我在语言处理方面非常糟糕,有人已经这样做了吗?转换器不需要是 PHP。python, Java, ...都是文件(我只是更喜欢python,仅此而已)。

php backwards-compatibility

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

下划线变量后跟范围在 bash 中意味着什么:$_{0..10}

根据tldp.org,bash 下划线变量是:

下划线变量在 shell 启动时设置,包含参数列表中传递的正在执行的 shell 或脚本的绝对文件名。随后,它在扩展后扩展为上一个命令的最后一个参数。它还设置为执行的每个命令的完整路径名,并放置在导出到该命令的环境中。检查邮件时,该参数保存邮件文件的名称。


但是这个答案是如何在 Bash 中重复一个字符?它的用法很奇怪:

# exactly the same as perl -E 'say "=" x 100'.
echo -e ''$_{1..100}'\b='
Run Code Online (Sandbox Code Playgroud)

使用这个变量我无法从它的语义中得到任何东西,所以问题是

  • 一根绳子。
  • 其次是$_
  • 其次是范围的扩大。
  • 后面跟着另一个字符串

bash 中的意思?

样本:

# exactly the same as perl -E 'say "=" x 100'.
echo -e ''$_{1..100}'\b='
Run Code Online (Sandbox Code Playgroud)

bash

3
推荐指数
1
解决办法
3612
查看次数