1. 程式人生 > >javafx 執行在android上遇到的難題-完美解決

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 一點都不用心

不跨平臺 誰會用你啊

"