小编Nik*_*dun的帖子

在JavaFX应用程序中更改游标以进行长时间操作

我想在JavaFX应用程序中执行可能很长的操作时将光标更改为Cursor.WAIT.我以为Platform.runLater会帮助我:

this.getStage().getScene().setCursor(Cursor.WAIT);

Platform.runLater(new Runnable() {
    @Override
    public void run() {
        // Do some stuff
        getStage().getScene().setCursor(Cursor.DEFAULT);
    }
});
Run Code Online (Sandbox Code Playgroud)

但光标不会改变.为什么这不起作用?

java javafx

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

确定JavaFX中的调用节点更改侦听器

我需要在更改文本时对多个TextField执行验证.验证完全相同,所以我认为我使用一个程序.我不能使用onInputMethodTextChanged,因为即使控件没有焦点我也需要执行验证.所以我在textProperty中添加了一个ChangeListener.

private TextField firstTextField;
private TextField secondTextField;
private TextField thirdTextField;

protected void initialize() {
    ChangeListener<String> textListener = new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable,
                String oldValue, String newValue) {
            // Do validation
        }
    };

    this.firstTextField.textProperty().addListener(textListener);
    this.secondTextField.textProperty().addListener(textListener);
    this.thirdTextField.textProperty().addListener(textListener);
}
Run Code Online (Sandbox Code Playgroud)

但是,在执行验证时,无法知道哪个TextField触发了更改.我如何获得这些信息?

java javafx-2

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

有没有办法获得JavaFX属性的所有绑定?

标题说明了一切,但要详细说明:如果我将一个或多个绑定添加到某个属性,是否有办法在以后获取并检查它们?我希望Property类中有getBindings()方法,但显然没有.

java javafx

6
推荐指数
1
解决办法
713
查看次数

如何以编程方式检查行是否可删除?

假设我们有一个像这样的PostgreSQL表:

CREATE TABLE master (
    id INT PRIMARY KEY,
    ...
);
Run Code Online (Sandbox Code Playgroud)

以及使用外键引用它的许多其他表:

CREATE TABLE other (
    id INT PRIMARY KEY,
    id_master INT NOT NULL,
    ...
    CONSTRAINT other_id_master_fkey FOREIGN KEY (id_master)
                                    REFERENCES master (id) ON DELETE RESTRICT
);
Run Code Online (Sandbox Code Playgroud)

有没有办法检查(从触发器功能内)主行是否可删除而不实际尝试删除它?显而易见的方法是逐个对所有引用表执行SELECT,但我想知道是否有更简单的方法.

我需要这个的原因是我有一个包含分层数据的表,其中任何行都可以有子行,并且只有层次结构中最低的子行可以被其他表引用.因此,当一行即将成为父行时,我需要检查它是否已在任何地方引用.如果是,则它不能成为父行,并且拒绝插入新的子行.

sql postgresql database-design plpgsql sql-delete

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

RestEasy客户端:无效使用BasicClientConnManager:仍然分配了连接

我正在使用RestEasy客户端从Web服务器检索实体列表.这是我的代码:

@ApplicationScoped
public class RestHttpClient {
    private ResteasyClient client;

    @Inject
    private ObjectMapper mapper;

    @PostConstruct
    public void initialize() {
        HttpParams params = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(params, 5000);
        HttpConnectionParams.setSoTimeout(params, 5000);
        HttpClient httpClient = new DefaultHttpClient(params);
        this.client = new ResteasyClientBuilder().httpEngine(new ApacheHttpClient4Engine(httpClient)).build();
    }

    public <E> List<E> getList(final Class<E> resultClass, final String path,
            MultivaluedMap<String, Object> queryParams) {
        ResteasyWebTarget target = this.client.target(path);
        Response response = null;
        try {
            response = target.queryParams(queryParams).request().get();
            String jsonString = response.readEntity(String.class);
            TypeFactory typeFactory = TypeFactory.defaultInstance();
            List<E> list = this.mapper.readValue(
                    jsonString, typeFactory.constructCollectionType(ArrayList.class, resultClass));
            return …
Run Code Online (Sandbox Code Playgroud)

resteasy apache-httpclient-4.x

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

WildFly - 从 WAR 获取资源

我使用以下方法从 WildFly 的 WAR 文件中获取资源:

this.getClass().getResource(relativePath)
Run Code Online (Sandbox Code Playgroud)

当应用程序部署为爆炸式 WAR 时,它会起作用。它曾经也适用于压缩的 WAR。昨天,我在 Eclipse 中对项目进行了清理和重建,但它刚刚停止工作。

当我检查资源根目录时:

logger.info(this.getClass().getResource("/").toExternalForm());
Run Code Online (Sandbox Code Playgroud)

我明白了:

file:/C:/JBoss/wildfly8.1.0.CR1/modules/system/layers/base/org/jboss/as/ejb3/main/timers/
Run Code Online (Sandbox Code Playgroud)

所以,难怪它不起作用。它可能与 JBoss 模块加载有关,但我不知道这是错误还是正常行为。

我在 StackOverflow 上发现了各种类似的问题,但没有适用的解决方案。建议之一是像这样使用 ServletContext:

@Resource
private WebServiceContext wsContext;
...
ServletContext servletContext = (ServletContext)this.wsContext.getMessageContext()
        .get(MessageContext.SERVLET_CONTEXT);
servletContext.getResource(resourcePath);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试以这种方式获取 MessageContext 时,我得到了一个 IllegalStateException。所以我基本上被卡住了。有任何想法吗?

java jboss getresource wildfly-8

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

使用现有方法作为JavaFX事件处理程序

在我能找到的几乎所有示例中,JavaFX事件处理程序都是作为匿名内部类创建的,如下所示:

button.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
        if (event.getClickCount()>1) {
            System.out.println("double clicked!");    
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,我真的很讨厌匿名内部类(UGLY !!!),而且我也不想为每个事件处理程序创建单独的类.我想将现有方法用作事件处理程序,就像FXMLLoader一样.我的第一个想法是使用反射和泛型,这就是我想出的:

public final static <E extends Event> EventHandler<E> createEventHandler(
        final Class<E> eventClass, final Object handlerInstance, final String handlerMethod) {
    try {
        final Method method = handlerInstance.getClass().getMethod(handlerMethod, eventClass);
        return new EventHandler<E>() {
            @Override
            public void handle(E event) {
                try {
                    method.invoke(handlerInstance, event);
                } catch (IllegalAccessException | IllegalArgumentException
                        | InvocationTargetException e) {
                    e.printStackTrace();
                }
            }
        };
    } catch (NoSuchMethodException | SecurityException e) { …
Run Code Online (Sandbox Code Playgroud)

reflection event-handling javafx-2

4
推荐指数
1
解决办法
5941
查看次数

扩展番石榴收藏品

我想扩展LinkedHashMultimap(Guava 16.0.1),主要是添加返回常用预填充地图的方法.

public class MyMap extends LinkedHashMultimap<String, Object> {
}
Run Code Online (Sandbox Code Playgroud)

但是,正如我所知,大多数番石榴收藏品是最终的,而那些不是,不会暴露公共建设者.这个设计决定的可能原因是什么?什么是实现我的目标的最佳方法?我能想到的最好的方法是在我的课程中包装Multimap方法,但这远非理想.

编辑:

一些用户指出了不允许继承的正当理由.为了稍微扩展问题,我想指出几点.

  1. 如果不建议在公共API中继承,那么为什么Java自己的集合类不是最终的?

  2. 假设我广泛使用以下类:

LinkedHashMultimap <类<?扩展BaseEntity>,BiConsumer <?扩展BaseEntity,?extends Object >>

现在,这是一个满口.如果我可以:

public class ConsumerMap extends LinkedHashMultimap<Class<? extends BaseEntity>, BiConsumer<? extends BaseEntity, ? extends Object>> {
}
Run Code Online (Sandbox Code Playgroud)

然后我可以在我的代码中使用ConsumerMap而不是那个怪物.我相信只有可读性才足以证明继承的合理性.

java guava

4
推荐指数
2
解决办法
362
查看次数

如果没有匹配则选择第一条记录

在PostgreSQL中,我想根据某些条件选择一行,但如果没有符合条件的行,我想返回第一行.该表实际上包含一个序数列,因此任务应该更容易(第一行是序号为0的那一行).例如:

SELECT street, zip, city
FROM address
WHERE street LIKE 'Test%' OR ord = 0
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,没有办法保证匹配的记录的顺序,我没有任何东西可以按顺序排序.使用单个SELECT语句执行此操作的方法是什么?

sql postgresql sql-limit

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

Java正则表达式 - 无法以斜杠或空格开头或结尾,也没有连续的斜杠

我需要一个具有以下要求的正则表达式:

  • 可以包含字母数字字符,空格和斜杠
  • 无法以空格或斜线开始或结束
  • 不能包含连续斜杠
  • 长度可以在2到20个字符之间

到目前为止,我有以下内容:

^[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
Run Code Online (Sandbox Code Playgroud)

我认为它涵盖了除连续斜线之外的所有内容.有没有办法在Java正则表达式中满足此要求?

java regex

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

如何动态更改TableView的行高?

当用户选择/取消选择CheckBox时,我想更改JavaFX TableView的行高。我能找到的唯一方法是通过CSS,所以我尝试了:

if (someCheckBox.isSelected())
    tableView.setStyle(".table-row-cell {-fx-cell-size: 60px;}");
else
    tableView.setStyle(".table-row-cell {-fx-cell-size: 20px;}");
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。任何建议,将不胜感激。

javafx javafx-8

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

WHERE子句基于列值的运算符

我想有一个包含值来比较表操作员使用(=,!=,~,!~等).例如:

CREATE TABLE rule (
    value1 varchar NOT NULL,
    op1 varchar NOT NULL,
    value2 varchar NOT NULL,
    op2 varchar NOT NULL,
    ...
);
Run Code Online (Sandbox Code Playgroud)

我想要的可以使用这个伪代码来描述:

SELECT * FROM rule WHERE value1 op1 ?;
Run Code Online (Sandbox Code Playgroud)

在示例中,我将操作符存储在单独的列中,但我对其他解决方案持开放态度.

sql postgresql dynamic-sql where-clause

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