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

有兴趣可以了解下这款国内人气很旺的JAVA代码生成器基于拖拽,不用写复杂的模板,支持多种数据库,适配wap,管理后台各种功能全有 免费开源 地址:https://blog.csdn.net/adyuebanwan/article/details/83006405 或者 http://www.magicalcoder.com

=======================================================================================

今天又拿起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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值