javafx 运行在android上遇到的难题-完美解决

来源:互联网 发布:it has =it's 编辑:程序博客网 时间:2024/05/16 02:49

今天又拿起javafx 研究了一把 最后终于成功部署到了 android上 把步骤简单记录下来,有兴趣的可参考,不会的加群323237052

原文是:javafx部署到android上居然不支持中文,现在重要找到了解决方案 一句话:自定义字体 然后全局设置字体就可以了 这个是解决思路

scene.getStylesheets().add("/magicalcoder.css");

css:magicalcoder.css

@font-face {    src: url('LiSu.ttf');}.label{    -fx-font-family: LiSu;    -fx-font-size: 30;}.button{    -fx-font-family: LiSu;}.text-field{    -fx-font-family: LiSu;    -fx-font-size: 30;}.text-area{    -fx-font-family: LiSu;    -fx-font-size: 20;}

文件目录:

resources:magicalcoder.css  LiSu.tff


国外有个项目 gluon,去他们官方网站下载 按照步骤来做 最终就能成功 以上抛砖引玉 中文问题一解决 就太好了 完全可以用来开发一下简单的项目了

亲测已经成功部署到android 至于ios由于没机器,没尝试 不过肯定也可以 

android上的速度非常快 跟原生没啥区别

java片段

public BasicView(String name) {        super(name);        Label label = new Label("隶书");        Button button = new Button("隶书字体");        button.setGraphic(new Icon(MaterialDesignIcon.LANGUAGE));        TextArea textArea = new TextArea();        InputStream inputStream = null;        final Font font ;        try {            inputStream = GluonApplication.class.getResourceAsStream("/LiSu.ttf");        } catch (Exception e) {            e.printStackTrace();        }        font = Font.loadFont(inputStream,30);//        label.setFont(font);        button.setOnAction(e ->  {                     label.setText(font.getFamily());//获取字体的名称                    }                );        TextField textField = new TextField("测试");        textField.setText("好的呀");        VBox controls = new VBox(15.0, label, button);        controls.getChildren().add(textField);        controls.getChildren().add(textArea);        controls.setAlignment(Pos.CENTER);        setCenter(controls);    }


"

1 中文问题  你会发现居然不支持中文

Droid Sans Fallback
    查找原因:因为字体的远古

只要下面控件加上字体属性 便可轻松解决中文无法显示的问题

<TextArea prefHeight="50.0" prefWidth="600.0" text="内容">
   <font>
      <Font name="Droid Sans Fallback" size="13.0" />
   </font>
</TextArea>


费了好大劲本以为中文问题解决了 可惜,你试着在远古textfield输入中文 无论如何也无法出来 只能输入英文和数字 

这又是为什么呢 希望大神能解决 研究了很久 无法解决,受伤的总是中国人 要是哪位大神解决了我的难题 奉上100元川资作为感谢 

悬赏:使用gluon javafxposts mobile工具 打出来的apk包,所有的输入框控件都无法输入中文


不过为了达到输入中文的目的,我们曲线救国吧

webview神器,javafx支持webview ,我们把要输入中文的部分放到webview里面吧,然后通过java与webview的js交互,可以获取webview中

元素的内容,这样也就拿到了中文,可惜这一切实在太费劲了,为了个中文 绕一大圈,无奈 javafx 就这样 不温不火的 oracle算是坑了javafx 一点都不用心

不跨平台 谁会用你啊

"

0 0