小编May*_*uso的帖子

JavaFX屏幕分辨率缩放

我一直在寻找一种方法来做到这一点,但我只找到了这个没有答案的问题.

我正在使用1366x768笔记本电脑开发,我使用JavaFX来创建GUI(很抱歉,但是我无法发布代码,它基本上是一个包含几个GridPanes的AnchorPane,其中包含更多GridPanes,其中包含标签,TextField和a情侣图表).

当我在另一个分辨率(1920x1080或1600x900)上加载项目时出现问题.

我正在使用stage.setMaximized(true);,但这只是缩放背景,舞台本身,因此所有元素和容器(面板,标签,TextFields .....)保持与1366x768分辨率相同的大小,使GUI"不适合"分辨率不完全是1366x768.

我希望我能很好地解释我的问题,我的英语远非完美.

有没有人对如何使元素按阶段分辨率进行缩放有任何建议?

(我需要在每台显示器中最大化或全屏显示软件,因此制作固定分辨率(例如1366x768)似乎不是一个好的解决方案).

谢谢你们.

更新:

我刚刚创建了一个小例子.它是默认JavaFX AnchorPane中的2x1 GridPane,我在网格窗格中添加了两个示例按钮.

<AnchorPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" >
<children>
    <GridPane prefHeight="300.0" prefWidth="400.0">
        <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        </columnConstraints>
        <rowConstraints>
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
        <children>
            <Button fx:id="example1" mnemonicParsing="false" text="Example 2" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
            <Button fx:id="example2" mnemonicParsing="false" text="Example 2" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER" />
        </children>
    </GridPane>
</children>
Run Code Online (Sandbox Code Playgroud)

这个代码在400x300屏幕上看起来不错(太少了,我知道,这只是一个例子),当我将它缩放到1366x768(不是真正的全屏,只是stage.setMaximized(true);)时,GridPane不能缩放,只有舞台本身,所以我有一个全屏幕背景,屏幕左上角有一个400x300的窗格(带有小按钮).

TL; DR:按钮保留在屏幕左上角的示例代码,当我扩大分辨率时,其余部分只是一个空白区域.

更新2; 忘了Java代码.

Parent root = FXMLLoader.load(getClass().getResource("UI.fxml")); …
Run Code Online (Sandbox Code Playgroud)

java javafx screen-resolution fxml

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

Eclipse在Ubuntu上冻结了UI

我最近安装了ubuntu 16.04(自动更新到这个版本),我通常用Java开发,我知道eclipse,所以我安装它,一切都很好.

我配置了所需的一切(Java路径,JDK ......没什么特别的),工作正常,除了Eclipse UI.

每次我创建一个项目时UI都会冻结(虽然项目是正确创建的),每次我运行任何程序时(尽管程序运行正常(不总是正确的xD,但这是我的错)),以及许多其他任务.

知道为什么会这样吗?甚至更好,如何解决?

我还仔细检查了我使用的JRE(因为我发现人们遇到了开源软件的问题),我使用的是oracle的版本(现在还不确定这个名字,抱歉,版本8).它是64位版本的一切.

编辑:我忘了提到我使用火星版.另外,我刚刚安装了NetBeans(8.1),完全相同的问题,然后我认为这是图形驱动程序的问题,再次安装,仍然有同样的问题.不知道现在该尝试什么.

更新:检查日志文件.我觉得没什么奇怪的,但可能会遗漏一些东西:

!SESSION 2015-12-04 13:24:38.930     -----------------------------------------------
 eclipse.buildId=4.5.1.M20150904-0015
 java.version=1.8.0_66
 java.vendor=Oracle Corporation
 BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=es_ES
 Command-line arguments:  -os linux -ws gtk -arch x86_64

 !ENTRY org.eclipse.core.resources 2 10035 2015-12-04 13:24:40.542
 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
Run Code Online (Sandbox Code Playgroud)

更新2:我只是运行@dan建议的命令.这是结果

 "main" #1 prio=6 os_prio=0 tid=0x00007f0ec000a000 nid=0x26e0 runnable [0x00007f0ec9a18000]
   java.lang.Thread.State: RUNNABLE
    at org.eclipse.swt.internal.gtk.OS._gtk_widget_get_allocation(Native Method)
    at org.eclipse.swt.internal.gtk.OS.gtk_widget_get_allocation(OS.java:14234)
    at org.eclipse.swt.widgets.Control.getBounds(Control.java:832)
    at org.eclipse.jface.fieldassist.ControlDecoration.getDecorationRectangle(ControlDecoration.java:1185)
    at org.eclipse.jface.fieldassist.ControlDecoration$3.paintControl(ControlDecoration.java:635)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:230) …
Run Code Online (Sandbox Code Playgroud)

java eclipse ubuntu user-interface freeze

10
推荐指数
3
解决办法
9309
查看次数

减少JavaFX RAM的使用

我有一个LineCharts实时显示4的java程序.其中每个都有2个系列(我XYChart.Series<Number, Number>()用作LineChart.Series<Number, Number>()显示警告),用户可以使用滑块浏览X轴(水平).

我的问题是我需要在这些系列中保持每个系列的10000(峰值)值,这样usar可以在图表上向左或向右(使用滑块),这总共产生大约80000个值.

(该系列最多可存储10000个值,但图表同时显示500个值,因此用户可以选择他/她想要看到的滑块中的500个中的500个)

我只是在列表上有太多的值,这导致:

对象RAM使用1 对象RAM使用2

正如你在图像中看到的,大多数创建的对象都与图表有关,我真的不能说太多,因为我不知道.有没有办法阻止JavaFX创建这个对象?

整体RAM和CPU使用情况如下所示:(这让我相信我正在创建过多的对象并使GC工作太多)

在此输入图像描述

我一直在搜索信息,我认为WeakReferenceQueue$ListEntry是一个标记为删除的节点?但我不确定这一点,或者如何防止创建这些.

如何防止JavaFX创建这么多对象?(节点?)

这些图表仅是现在采用的示例,每个系列大约有4000个值,当使用更多数据(最多10000个)时,CPU和RAM使用率会更高.

java performance ram javafx

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

无法在 Windows 上打开使用 apache poi (Java) 创建的 Excel 文件

在我的系统中,我有一个类可以用一些数据创建一个 excel。

基本上我从变量 ArrayList> 中读取所有 String 值并将它们写入 Excel 单元格中。

public void writeData(Data data, int sheetNumber)
        throws EncryptedDocumentException, InvalidFormatException, IOException {
    org.apache.poi.ss.usermodel.Workbook workbook;

    try {
        workbook = WorkbookFactory.create(new File(path));
    } catch (FileNotFoundException e) {
        workbook = new HSSFWorkbook();
    }

    org.apache.poi.ss.usermodel.Sheet sheet;
    try {
        sheet = workbook.createSheet("Sheet" + sheetNumber);
    } catch (IllegalArgumentException e) {
        sheet = workbook.getSheet("Sheet" + sheetNumber);
    }

    int dataListSize = data.getData().size();
    for (int i = 0; i < dataListSize; i++) {
        Row row = sheet.createRow(i);
        int rowSize = data.getData().get(i).size(); …
Run Code Online (Sandbox Code Playgroud)

java windows excel apache-poi

6
推荐指数
2
解决办法
8042
查看次数

使用sysctl更改docker文件中的内核参数,运行中的容器会影响主机内核

Docker与Host共享内核。

如果我在docker文件中添加它并构建映像:

RUN sysctl -w fs.nr_open=2000000
RUN sysctl -w net.ipv4.tcp_tw_recycle=1
Run Code Online (Sandbox Code Playgroud)

然后我通过该镜像运行docker容器,此配置会影响主机操作系统吗?

我不想影响不会更改此配置的主机或其他容器。

docker

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