相关疑难解决方法(0)

使用java.util.logging的好例子

我想在我的程序中使用日志.我听说过java.util.logging,但我不知道如何开始.

是否有任何关于日志记录的例子?我如何在自己的程序中使用日志记录?

java logging java.util.logging

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

从JavaFX中的不同线程更新UI

我正在开发一个具有多个TextField对象的应用程序,这些对象需要更新以反映相关后端属性的更改.该TextFields为不可编辑,只有后端可能会改变他们的内容.

据我所知,正确的方法是在单独的线程上运行繁重的计算,以免阻塞UI.我这样做是使用javafx.concurrent.Task并将单个值传递回JavaFX线程updateMessage(),这很好用.但是,我需要更新多个值,因为后端会进行其处理.

由于后端值存储为JavaFX属性,我尝试将它们绑定到textProperty每个GUI元素,并让绑定完成工作.但是,这不起作用; 运行一会儿后,TextField即使后端任务仍在运行,s也会停止更新.没有例外.

我也尝试过使用Platform.runLater()主动更新TextFields而不是绑定.这里的问题是runLater()任务的调度速度比平台可以运行的速度快,因此GUI变得迟缓,即使在后端任务完成后也需要时间"赶上".

我在这里找到了一些问题:

转换为UI的记录器条目不再随时间更新

JavaFX中的多线程挂起了UI

但我的问题仍然存在.

总结:我有一个后端对属性进行更改,我希望这些更改出现在GUI上.后端是遗传算法,因此其操作被分解为离散的世代.我希望TextFields能够在几代人之间至少刷新一次,即使这会延迟下一代.更重要的是,GUI响应良好,而GA运行速度快.

如果我没有明确问题,我可以发布一些代码示例.

UPDATE

我按照James_D的建议设法做到了.为了解决后端必须等待控制台打印的问题,我实现了一个缓冲的控制台.它存储要在a中打印的字符串,StringBuffer并实际将它们附加到调用方法TextAreaflush().我使用AtomicBoolean来防止下一代发生,直到刷新完成,因为它是由Platform.runLater()runnable 完成的.另请注意,此解决方案非常慢.

java user-interface multithreading javafx-2

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

JavaFX中的可复制Label/TextField/LabeledText

我只想在JavaFX中创建可复制的标签.我试图创建没有背景,没有焦点边框和默认背景颜色的TextField,但我没有成功.我发现了很多问题如何从控制中删除焦点背景,但所有这些看起来像"黑客".

是否有任何标准解决方案来实现可复制文本?

javafx javafx-2 javafx-8

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

JavaFX ChangeListener并不总是有效

我有一个JavaFX应用程序,并在那里有一个并发任务.当Task正在运行时,我想将updateMessage()中的消息附加到TextArea

因为绑定不会将新文本追加到TextArea,所以我使用了ChangeListener

worker.messageProperty().addListener((observable, oldValue, newValue) -> {
    ta_Statusbereich.appendText("\n" + newValue);
});
Run Code Online (Sandbox Code Playgroud)

这是有效的,但不是每一次改变.我用System.out.println()检查了它,并在1到300的任务中计算

for (Integer i = 1; i <= 300; i++) {
    updateMessage(i.toString());
    System.out.println(i.toString());
}
Run Code Online (Sandbox Code Playgroud)

任务中的println()给了我想要的1,2,3,4,5,6,7,8等等,但我的TextArea显示1,4,5,8,9我然后添加了一个println ChangeListener得到相同的结果,1,4,5,8,9(结果是随机的,不总是1,4,5 ......)

为什么?有没有其他方法将消息文本附加到TextAres,也许与绑定?

java concurrency javafx changelistener

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

将记录器消息写入文件和textarea,同时保持Java中的默认行为

我目前正致力于在.log文件中记录来自我的应用程序的消息.到目前为止这工作正常,但现在我正在尝试将相同的消息输出到textarea.我一直在使用默认记录器.

这样我就有一个类可以完成记录到.log文件的所有工作,并将相同的输出写入textarea以供管理员查看.

这是一个Java swing JFrame应用程序,只包含一个textarea(我需要的全部).后台有很多工作,所有这些活动都必须记录下来进行审查/调试.

我一直在找一个很好的例子,所以我想知道你们是否可以帮助我.

java logging textarea

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

JavaFX 控制器类不起作用

我真的很难理解 JavaFX 控制器,我的目标是写入一个 TextArea 作为日志。

我的代码如下,但我希望能够从另一个类中更改值 ETC,我可以在需要时调用它。我试图创建一个扩展 Initializable 的控制器类,但我无法让它工作。有人能把我引向正确的方向吗?

我想将底部的@FXML 代码移动到另一个类并更新场景。

package application;
import javafx.event.ActionEvent;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;

import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("Root.fxml"));
            Scene scene = new Scene(root,504,325);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }

    public Thread thread = new Thread(new …
Run Code Online (Sandbox Code Playgroud)

java javafx scenebuilder

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

JavaFX 动画定时器和事件

我有一个 AnimationTimer,我将其用作无限循环,如下所示:

\n
animator = new AnimationTimer(){\n  @Override\n  public void handle(long now) {\n    // Update\n    Game.simulationStep();\n    // Render\n    Game.render();\n    }\n  }\n};\nanimator.start();\n
Run Code Online (Sandbox Code Playgroud)\n

处理函数每秒被调用 60 次,更新一个小游戏并渲染场景图中的一些视图。

\n

我\xc2\xb4m问自己的是,如果当我有像按钮单击这样的事件时,事件的代码会在循环迭代完成后执行吗?\n还是多线程的?

\n

问题是,我有一个游戏对象列表,它可以由事件操作(通过单击按钮删除游戏对象),也可以由模拟步骤中的逻辑操作。\n如果事件从该列表中删除游戏对象,而模拟步骤( ) 正在对列表中的对象执行某些操作。

\n

java javafx

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