我需要對這個類進行更改,我無法以正常方式進行子類化。所以我可以修改 java 檔案(或制作它的副本),但是如何讓我的 Swing 應用程式使用這個版本而不是 Java 運行時提供的版本?
我想做的是復制 com.sun.java.swing.plaf.windows.WindowsTableHeaderUI 并修復它,所以我不能只創建類的副本并將其放入我自己的 pacakage hierachy 中,因為我沒有訪問類中提到的許多類(例如XPStyle)那么我如何替換系統類?
uj5u.com熱心網友回復:
所以我讓它作業如下:
git 克隆https://github.com/AdoptOpenJDK/openjdk-jdk11.git
將以下檔案從 src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows -
WindowsTableHeaderUI.java,TMSchema.java,復制XPStyle.java到我的代碼樹中修改了這三個檔案的包陳述句以匹配它們已放置
添加了以下內容以允許找到內部類
--add-exports java.desktop/sun.awt.windows=ALL-UNNAMED
--add-exports java.desktop/sun.awt.image=ALL-UNNAMED
--add-exports java.desktop/sun.swing.table=ALL-UNNAMED
--add-exports java.desktop/sun.swing=ALL-UNNAMED
--add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED --add-exports java.base/sun.security.action=ALL-UNNAMED
允許類編譯的一些小改動
實作了我對 WindowsTableHeaderUI 類的修復
在應用程式中使用,但僅在 Windows 上使用
if(Platform.isWindows()) { UIManager.put("TableHeaderUI","com.jthink.jaikoz.tablerenderer.windows.WindowsTableHeaderUI"); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429897.html
