一套不必自己做的元件
按鈕、輸入欄、清單、分頁、選單、對話框、分割窗格、選色器,長條圖、折線圖與環圈圖,還有一個虛擬化清單,其中一百萬列的成本與二十列相同。每一個都從主題讀取顏色、形狀與密度,所以沒有寫死的值,緊湊模式只要一行。
查看全部



















Java 的桌面 UI
Limn 自己畫出每一個像素。元件、版面、文字、圖表、媒體與 3D 視埠,只要一個相依套件,沒有 Swing,沒有 JavaFX,底下也沒有原生工具組。


陳列和主題編輯器,直接來自 Maven Central:沒有什麼要複製,也沒有什麼要裝,除了 jbang;你要是沒有 JDK,它連 JDK 一起取來。下載的是工具組、字型,以及這台機器的原生程式庫,另外五個平台的不會下載。
-XstartOnFirstThread 只有 macOS 認得,別的系統上的 JVM 收到它會拒絕啟動。別名跑的是最新發行版;想固定某個版本,就寫座標:jbang io.github.limn-toolkit:limn-demo:0.7.0。沒有網路時,展示程式也是附在每次發行裡的一個檔案。
jbang --java-options=-XstartOnFirstThread demo-toolkit/limn-toolkit # 陳列
jbang --java-options=-XstartOnFirstThread theme-editor-toolkit/limn-toolkit # 主題編輯器jbang demo-toolkit/limn-toolkit # 陳列
jbang theme-editor-toolkit/limn-toolkit # 主題編輯器jbang demo-toolkit/limn-toolkit # 陳列
jbang theme-editor-toolkit/limn-toolkit # 主題編輯器五分鐘
沒有標記語言,沒有註解處理器,沒有建置外掛。加上後端,它會把工具組一起帶來,寫普通的 Java,你就有了一個視窗。
閱讀安裝指南dependencies {
implementation("io.github.limn-toolkit:limn-backend-lwjgl:0.7.0")
}public static void main(String[] args) {
// macOS needs -XstartOnFirstThread on the JVM command line; it is macOS-only and a
// JVM elsewhere given it will not start.
try (Backend backend = new LwjglBackend()) {
NativeWindow window = backend.createWindow(
new WindowConfig("Hello, Limn", 480, 320, true, true));
Column column = new Column();
column.gap(12);
column.add(new Label("A window, drawn by Limn."));
column.add(new Button("Close").onAction(window::requestClose));
Scene scene = new Scene(new Padding(Insets.all(24), column));
scene.bind(window);
backend.runEventLoop();
}
}你會得到什麼
按鈕、輸入欄、清單、分頁、選單、對話框、分割窗格、選色器,長條圖、折線圖與環圈圖,還有一個虛擬化清單,其中一百萬列的成本與二十列相同。每一個都從主題讀取顏色、形狀與密度,所以沒有寫死的值,緊湊模式只要一行。
查看全部











四個元件加一個標記:欄往下堆疊,列往旁鋪開,堆疊層層相覆,內距往內縮,Expanded 決定誰拿走剩下的空間。整套語彙就這些。沒有約束求解器要設定,也沒有版面管理員要安裝。
閱讀版面指南





文字以繪製時相同的前進量來量測,字型遞補逐字元進行,所以拉丁文、希臘文、西里爾文與中日韓文可以混在同一個字串裡,而你不必挑字體。輸入法在欄位內完成組字,編輯以字素叢集為單位移動,因此組合符號與多段式表情永遠不會被切開。由右至左也不只是塑形:方向是子樹繼承的一條軸,所以希伯來語視窗會鏡像——其中仍可以放一塊由左至右的程式碼面板。
閱讀文字指南

你的應用該像你的產品,而不像它所依賴的那個函式庫。主題就是純資料(每一種顏色、圓角半徑、每個控件繼承的尺寸級距),執行時一次呼叫即可整套替換。品牌字體從你自己掌握的檔案載入,工具包自帶的觀感一點都不會留下。
主題是怎麼運作的
在你投入之前
任何工具組都有取捨。這些就是取捨,先講清楚,因為到第三週才發現,比現在讀到糟糕得多。
阿拉伯文、希伯來文、天城文與泰文在任何繪製文字的地方都會正確塑形,版面沿一條可繼承的由右至左軸鏡像,數字、排序與大小寫都跟著語言走——ar 與 he 的翻譯照常發布,每種文字都配有粗體。這裡沒有的是直排:沒有由上而下的欄,也沒有貫穿版面的第二條軸。行會斷開,但不做左右對齊。
鍵盤導覽與焦點框是完整的,但沒有向平台的無障礙 API 公開任何內容。若螢幕閱讀器必須可用,這個工具組目前還不適合那樣的應用程式。
API 在各版本之間仍會變動,而 OpenGL 是唯一的繪製路徑。請鎖定版本並閱讀發行說明。
安裝指南以一個跑得起來的程式收尾。之後的一切,就是指南、元件展示與 API 參考。