相关疑难解决方法(0)

JavaFx Gui与Swing的表现

我写了两个简单的程序,都绘制了相同的Sierpinski三角形: 在此输入图像描述
一个程序使用swing实现,一个使用javafx.存在非常显着的性能差异,swing实现持续快得多:

在此输入图像描述


(在这个测试案例中:超过1秒摆动Javafx超过12秒)
是否可以预料到或者我的javafx实现有什么问题?

Swing实现

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class SimpleSrpnskTriSw {

    private Triangles triPanel;

    SimpleSrpnskTriSw(int numberOfLevels){

        JFrame frame = new JFrame("Sierpinski Triangles (swing)");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        triPanel = new Triangles();
        frame.add(triPanel, BorderLayout.CENTER);
        frame.pack();

        frame.setResizable(false);
        frame.setVisible(true);

        triPanel.draw(numberOfLevels);
    }

    class Triangles extends JPanel{

        private static final int PANEL_WIDTH =600, PANEL_HEIGHT = 600;
        private static final int TRI_WIDTH= 500, TRI_HEIGHT= 500;
        private static …
Run Code Online (Sandbox Code Playgroud)

java performance swing javafx

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

定时JavaFX Canvas应用程序

为了练习JavaFX,我构建了一个绘制Sierpinski Triangles的简单应用程序.

import javafx.application.Application;
import javafx.application.Platform;
import javafx.concurrent.Task;
import javafx.geometry.Insets;
import javafx.geometry.Point2D;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class SierpinskiTriangles extends Application {

    private final int PADDING = 5;
    private static int numberOfLevels;

    public static void launch(String... args){

        numberOfLevels = 8;

        if((args != null) && (args.length > 0)) {

            int num = -1;
            try {
                num = Integer.parseInt(args[0]);
            } catch (NumberFormatException ex) {
                            ex.printStackTrace();
                return; …
Run Code Online (Sandbox Code Playgroud)

graphics performance swing javafx

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

标签 统计

javafx ×2

performance ×2

swing ×2

graphics ×1

java ×1