顯示具有 java 標籤的文章。 顯示所有文章
顯示具有 java 標籤的文章。 顯示所有文章

星期二, 12月 30, 2014

「JAVAFX」簡單JAVAFX使用心得

記得在4年前曾經爲朋友需求用 javafx 寫過簡易的 WEB APP,
如今過了4年 重新再去接觸,感覺當時寫的不曉得是後來改變很多 還是記憶淡忘,
至此大部分都看不懂了。

首先javafx 有個簡易可以拖拉點選編輯LAYOUT的工具 Scene Builder,
這個工具就類似ANDROID 的LAYOUT編輯界面,但是感覺比較好用。

雖然說 javafx 似乎不怎麼被看好,不過對於快速開發簡易的工具,是很容易的,

使用 NetBeans 建立一個 fxml 的專案後,會自動建立 FXMLDocumentController
裏面抓取 fxml 的元件 fx:id="vText_filePath"
只要寫
@FXML
 private Text vText_filePath;
感覺蠻方便的,而BUTTON 的ACTION事件 也可以使用onAction= 來設定,

拖拉檔案至元件裏面 可以使用setOnDragOver setOnDragDropped
這可以參考: http://docs.oracle.com/javafx/2/drag_drop/HelloDragAndDrop.java.html

而在使用 TableView 裏面的 TableColumn欄位參數設定的時候,
不曉得我哪裏有設錯 他一直無法映射到我的函數
最後使用手動的方式取出 我自定的函數 getDataPath(),
而函數回傳格式 StringProperty  
變數設定 private StringProperty datapath =new SimpleStringProperty(); 
        vTableCol_path.setCellValueFactory(
                new Callback<CellDataFeatures<pathList, String>, ObservableValue<String>>() {
                    @Override
                    public ObservableValue<String> call(CellDataFeatures<pathList, String> param) {
change body of generated methods, choose Tools | Templates.
                        return param.getValue().getDataPath();
                    }
                });
而我在 tableView中 最右邊 有多一個刪除的按鈕
ButtonCell 是自定 extends TableCell<Record, Boolean>的物件
        vTableCol_btn_deletePath.setCellFactory(
                new Callback<TableColumn<Record, Boolean>, TableCell<Record, Boolean>>() {
                    @Override
                    public TableCell<Record, Boolean> call(TableColumn<Record, Boolean> p) {
                        return new ButtonCell(vTable_selectFilePathList, mlist);
                    }
                });
在 ButtonCell 中如果使用刪除的功能,會發現 資料有刪除但按鈕卻還是停留在畫面上
這時需要在 updateltem 中做修改
    @Override
    protected void updateItem(Boolean t, boolean empty) {
        super.updateItem(t, empty);
        if (!empty) {
            setGraphic(cellButton);
        } else {
            setGraphic(null);
        }
    }
最後不得不說 小的APP 編譯的速度不快10~30多秒

要開發小工具都可以輕易的完成,而且還是跨平臺。





星期六, 4月 13, 2013

【MAC】【Android】編譯 LUA 以及 LUAJAVA 並且導入 libgdx 專案

這一連串的動作在LINUX已經夠麻煩了,在MAC也是OOXX的,而且做完一次就不會想在弄第二次。

(一) 編譯 32BIT的 LUA ,也可以不需要做這個動作,純粹是做筆記。




1.編輯 src/Makefile

macos:          $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline"  
修改為 
macos: $(MAKE) all MYCFLAGS="-DLUA_USE_LINUX -arch i386" MYLIBS="-lreadline -arch i386" 


2.之後就編譯 以及 安裝
make macossudo make install 
3.留意 IANSTALL 路徑

cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1
cd src && install -p -m 0755 lua luac /usr/local/bin
cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /usr/local/include
cd src && install -p -m 0644 liblua.a /usr/local/lib
cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1


(二)編譯 luajava

參考:http://retrovirus.com/incr/2005/08/building-luajava/

1.下載編譯好的版本或者用你自己編譯的,小弟這裡下載:
http://luabinaries.sourceforge.net/download.html
lua5_1_4_MacOS106_lib.tar.gz ,也可以連 bin 也抓,在本機可以用。

2.解壓縮 之後 找出 include 路徑 ,作為CONFIG檔的Lua 路徑

3.設定JAVA HOME include 路徑,這個鬼東西,害我一直沒編譯過,原來java home 路徑的根本不叫做INCLUDE 也不再 /Library/Java/Home 裡面,這個標頭檔資料夾在:/System/Library/Frameworks/JavaVM.framework/Headers 。
先進入 /Library/Java/Home 之後做捷徑:
 sudo ln -s /System/Library/Frameworks/JavaVM.framework/Headers include

4.下載 LUAJAVA :https://github.com/jasonsantos/luajava

5.解壓縮編輯 config 檔,紅色的地方就是已經增加或加註解或者修改的地方。

#############################################################
#Linux/BSD/Mac
LUA_DIR=
/Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib
LUA_LIBDIR= /Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib
LUA_INCLUDES= /Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib/include
#JDK= $(JAVA_HOME)
# For Mac OS, comment the above line and uncomment this one
JDK=/Library/Java/Home
# Full path to Lua static library
LIB_LUA=/Volumes/MacSpace/Library/lua5_1_4_MacOS106_lib/liblua5.1.a


#Linux/BSD
#LIB_EXT= .so
#Mac OS
LIB_EXT= .jnilib
LIB_PREFIX= lib

#Linux/BSD
#LIB_OPTION= -shared
#Mac OS
#LIB_OPTION= -dynamiclib -all_load
LIB_OPTION= -dynamiclib -all_load
## On FreeBSD and Mac OS systems, the following line should be commented
DLLIB= -ldl
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
INCS= -I$(JDK)/include -I$(JDK)/include/linux -I$(LUA_INCLUDES)
CFLAGS= $(WARN) $(INCS)
CC= gcc

#########################################################
VERSION= 1.1
PKG= luajava-$(VERSION)
TAR_FILE= $(PKG).tar.gz
ZIP_FILE= $(PKG).zip
JAR_FILE= $(PKG).jar
SO_FILE= $(LIB_PREFIX)$(PKG)$(LIB_EXT)
DIST_DIR= $(PKG)
# $Id: config,v 1.12 2006/12/22 14:06:40 thiago Exp $
6.之後進行編譯
make
7.資料夾裡面有一個 附檔名jnilinb 的檔案: libluajava-1.1.jnilib


(三)使用ndk編譯 luajava
編譯方法就和 LINUX 一樣了

1.先抓NDK http://developer.android.com/tools/sdk/ndk/index.html

2.在抓高手調整好的androLua: https://github.com/mkottman/AndroLua

3.解壓縮後 裡面的 jni 直接 複製到 ndk 的目錄下

4. 之後 就 ./ndk-build

5.在LIBS/ARMEABI 中 就有 libluajava.so

(四)導入 libgdx 專案

這樣子 桌面版 和 手機版就都可以動了,就可以寫遊戲了,超棒。。


2013 10/11 更新

專案必須增加 native library location的路徑, 否則會抓不到 luajava

Eclipse Lua Tool
1. http://www.eclipse.org/koneki/ldt/#installation



星期一, 8月 29, 2011

[LUA] 編譯 luajava

在 java 中使用 lua:
1.在http://www.keplerproject.org/luajava/ 抓luajava
2.在http://luabinaries.sourceforge.net/download.html 中 抓2進位版本。
小弟抓的是 lua5_1_4_Linux26g4_64_lib.tar.gz  ,
由于32位元編出來的 luajava.so 會在那該死的 jvm 出現 class: ELFCLASS32  錯誤。
3.解壓縮 lua 和 luajava,之後 進入 luajava 的資料夾開啟 config 設定檔
4.設定

  • 在這裏 lua資料夾叫做 lua64
  • JDK 路徑,記得要設好。
  • liblua.a 記得名字 要和 lua64 裏面那個一樣。
LUA_DIR= /home/cake/lua64
LUA_LIBDIR= /home/cake/lua64
LUA_INCLUDES= /home/cake/lua64/include 
JDK= /usr/lib/jvm/java-6-sun-1.6.0.26
LIB_LUA=$(LUA_LIBDIR)/liblua.a 

5.編譯 打入 make   ,編譯好後 在luajava 會發現一個 .so檔,之後再發.so檔放入你的專案中

6.在eclipse中,設定好 你的 native library 的路徑

7.載入 luajava.jar 或 把luajava 的 java 原始碼 直接放進去。

這樣大概就可以用了。。。。
弄了老半天,感覺比 android載lua 還麻煩。

星期一, 1月 03, 2011

【Java】遊戲翻譯工具

很多GALGAME遊戲都是日本來的,
當然都是日文的,
原本有找到AGCPTSySv2.2,
只是在繁體的系統下似乎沒辦法用google翻譯~~

最後心血來潮自己用JAVA寫了一個GOOGLE翻譯的小工具。
當然要配合  AGTH 來使用 ,雖然翻譯出來的東西還是看不懂,
看來還是等漢化好了,啟動也可以配合 對岸的喵翻v2.7 那是個很好用的軟體。
下載


筆記:
google-api-translate-java可以找到google翻譯的java jar工具,提供java方便的翻譯功能。

//一開始設定網路(?其實我也不太曉得)
Translate.setHttpReferrer("http://code.google.com/p/google-api-translate-java/");

//s 為要翻譯的字串
//之後2個參數分別為當前語言和翻譯的語言
String translatedText = Translate.translate(s,Language.JAPANESE, Language.CHINESE_TRADITIONAL);
.....
//系統的一開始需要註冊 clipBoard.setContents(selection, myFrm);
//監聽系統剪貼簿,需要在lostOwnership 裡面在註冊一次clipboard.setContents(contents, myFrm);
public void lostOwnership(Clipboard clipboard, Transferable contents) {
clipboard.setContents(contents, myFrm);
..........