更新

虽然本答案中的代码曾经在Windows上使用早期版本的JavaFX,但我在OS X 10.9.5 JavaFX 8u72上重新测试了相同的代码,代码不再有效.

行swingNode.setContent(awtInitializerTask.get());它指示JavaFX线程在awt线程上等待初始化awt canvas永远不会返回,阻止应用程序的执行和启动.

只需将您的AWT画布放入SwingNode并观察您的线程管理,您就可以了.

import javafx.application.Application;

import javafx.embed.swing.SwingNode;

import javafx.scene.Group;

import javafx.scene.Scene;

import javafx.stage.Stage;

import javax.swing.*;

import java.awt.*;

import java.util.concurrent.Callable;

import java.util.concurrent.FutureTask;

public class AwtCanvasWrapper extends Application {

private static final int W = 200;

private static final int H = 100;

@Override public void start(final Stage stage) throws Exception {

final AwtInitializerTask awtInitializerTask = new AwtInitializerTask(() -> {

JPanel jPanel = new JPanel();

jPanel.add(new CustomAwtCanvas(W, H));

return jPanel;

});

SwingUtilities.invokeLater(awtInitializerTask);

SwingNode swingNode = new SwingNode();

swingNode.setContent(awtInitializerTask.get());

stage.setScene(new Scene(new Group(swingNode), W, H));

stage.setResizable(false);

stage.show();

}

private class AwtInitializerTask extends FutureTask {

public AwtInitializerTask(Callable callable) {

super(callable);

}

}

private class CustomAwtCanvas extends Canvas {

public CustomAwtCanvas(int width, int height) {

setSize(width, height);

}

public void paint(Graphics g) {

Graphics2D g2;

g2 = (Graphics2D) g;

g2.setColor(Color.GRAY);

g2.fillRect(

0, 0,

(int) getSize().getWidth(), (int) getSize().getHeight()

);

g2.setColor(Color.BLACK);

g2.drawString("It is a custom canvas area", 25, 50);

}

}

public static void main(String[] args) {

Application.launch(args);

}

}

这是输出:

相关问题

回答一些其他问题

But that one is for swing components.

是的,但是awt组件可以包装在Swing组件中.

furthermore It says in the docs that it should not be used of heavyweight components

无论如何,它似乎对我有用,你的里程可能会有所不同.

performance is crucial for my app

然后尝试使用您的应用程序并检查:

>这幅画很可靠.

>表现可以接受.

如果上述任一检查失败,那么您可能需要使用不同的方法(虽然我不知道这种方法是什么,也许只是将Frame作为一个新窗口生成,其中包含AWT画布内容而不是嵌入画布在JavaFX场景内).

java awt canvas_JavaFX AWT Canvas相关推荐

  1. java异常awt_java.awt.HeadlessException

    Linux下安装eclipse的有关问题 Linux上安装eclipse的问题1.之前在Windows下安装的Myeclipse,写了一个java程序,用到了swing界面2.然后我在ubuntu上安 ...

  2. java.awt.color,AWT Color类

    颜色类规定在默认sRGB颜色空间或颜色的任意颜色空间中的颜色确定的颜色. 类的声明 以下是声明java.awt.Color类: publicclassColorextendsObjectimpleme ...

  3. swing java awt_java中AWT和SWing的区别与联系

    AWT和Swing都是java中的包. AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包. Swing :为解决 AWT 存在的问题而新开发的图形 ...

  4. java awt canvas_JAVA.AWT.CANVAS使用

    该组件继承自java.awt.Component组件,在这点上与JPanel上是一致的.所以在JPanel拥有与Canvas一样的功能是很很正常的. 之前的一直无法理解为啥有了JPanel还要Canv ...

  5. java awt canvas_java.awt 类 Canvas - Java 中文参考手册

    java.lang.Object java.awt.Component java.awt.Canvas 所有已实现的接口:ImageObserver, MenuContainer, Serializa ...

  6. # java swing,awt图形化界面代码案例合集

    文章目录 java awt,swing图形化界面代码案例合集 java awt,swing图形化界面代码案例合集 package Demo1; import java.awt.*; public cl ...

  7. Java学习记录 AWT绘图篇

    绘制图形 Canvas画布类 Class Canvas java.lang.Object java.awt.Component java.awt.Canvas 用来 绘制图形 或 捕获用户输入的事件. ...

  8. java awt table_java.awt.image 类 LookupTable - Java 中文参考手册

    java.lang.Object java.awt.image.LookupTable 直接已知子类:ByteLookupTable, ShortLookupTable public abstract ...

  9. java 围棋_Java.awt实现一个简单的围棋

    目录 0.前言 我小时候学过一段时间的围棋,可惜脑子不好使,是个臭棋篓子,到现在也有十多年的时间没有下过棋了,但是近几年围棋AI的出现,又让我重新关注了围棋 围棋真的很有意思,千变万化,有人简明的围空 ...

最新文章

  1. Hyperledger Fabric 链码(0) 说明
  2. 《计算机组成原理》第05章在线测试
  3. 归并排序改良 java_Java 八种排序算法总结
  4. 共享单车,信息安全应未雨绸缪
  5. delphi中Label中文显示不全的问题解决办法
  6. 《跟我一起写Makefile》读书笔记(2)
  7. layui导航栏页面滚动固定_网站建设页面导航如何降低用户寻找的时间
  8. pyQt显示系统文件目录
  9. outlook2016投票_投票:2016年读者选择奖和最佳采访奖
  10. 解决安装phpstudy之后启动Apache失败的问题
  11. python虚函数_Python进阶话题杂谈(十三)纯虚函数与抽象基类
  12. C语言学习笔记---一个简单的文件压缩示例
  13. +搭建“记忆宫殿”的三款思维导图神器
  14. 建模算法(十)——灰色理论之关联度分析
  15. cnpack 菜单顺序
  16. 红巨星粒子插件:Red Giant Trapcode Suite 15 for Mac
  17. 信息最全--MySQL循环插入测试用户数据--姓名
  18. 12种无线接入方式简析
  19. 「Injective衍生品市场创意大赛」角逐“最强王者”,就等你来
  20. 树莓派搭建http服务器实现网页监控摄像头

热门文章

  1. 微软职位内部推荐-Senior Software Engineer II-Search
  2. 介绍最新大片——程序员必看!
  3. 转载:JQuery制作的选项卡改进版
  4. 9种没结果的爱(未婚者必读)!!!
  5. Unity进阶技巧 - RectTransform详解
  6. 记录:自制的小说推荐程序(一)
  7. JavaScript兼容HTML代码的注释
  8. varnishtop中文man page
  9. java中 resource_Java从Resource中读取文本文件
  10. 为什么在反向传播中感知器初始值不能为0_人工智能可以为我们做什么?世界皆可二分类...