簡體   English   中英

放大 Java Swing 申請

[英]Zoom in Java Swing application

我正在尋找放大 Java Swing 應用程序的方法。 這意味着我想按給定因素調整給定 JPanel 中所有組件的大小,就好像我會截取 UI 的屏幕截圖並僅應用“圖像縮放”操作一樣。 必須調整字體大小以及復選框、文本框、光標等的大小。 可以通過對圖形 object 應用變換來縮放組件:

 protected Graphics getComponentGraphics(Graphics g) {
  Graphics2D g2d=(Graphics2D)g;

  g2d.scale(2, 2);

  return super.getComponentGraphics(g2d);
 }

只要您不關心自更新組件,它就可以工作。 如果您的應用程序中有文本框,則此方法將停止工作,因為文本框每秒更新一次以顯示(閃爍的)cursor。並且由於這次它不使用修改后的圖形 object,因此該組件出現在舊位置。 是否有可能永久更改組件圖形 object? 鼠標單擊事件處理程序也存在問題。 另一種可能性是將 JPanel (setPreferredSize) 的所有子組件調整為新大小。 這不適用於復選框,因為復選框的顯示圖片不會改變其大小。 我還考慮過編寫自己的布局管理器,但我認為這行不通,因為布局管理器僅更改對象的 position(和大小),但無法放大復選框(請參閱上一段)。 還是我對這個假設有誤? 您是否知道如何在不編寫自定義組件的情況下實現可縮放的 Swing GUI? 我尋找可旋轉的用戶界面,因為這個問題看起來很熟悉,但我也沒有找到任何令人滿意的解決方案。

謝謝你的幫助,克里斯

你可以嘗試一下JXLayer庫

它有幾個工具,可以幫助您進行縮放。 查看此處顯示的示例。 我建議你從這個庫中閱讀有關TransformUI的更多信息。 從示例中,它似乎可以幫助解決您的問題。

縮放視圖很容易; 轉換鼠標坐標只是稍微困難一些。 這是一個基本的例子 我會保留JComponent ,盡管開發一個知道幾何的類似ScaledComponent可能是有意義的。 這就是@ Gnoupi建議使用圖書館的地方。

您可能會發現Piccolo2D.java API很有用: http//code.google.com/p/piccolo2d/

這很簡單。

它特別吹噓它的平滑縮放。 你基本上制作一個可以包含各種元素的“畫布”,然后只需按住鼠標右鍵並來回平移鼠標即可進行縮放。

我在一個團隊中使用它來創建它: http//sourceforge.net/apps/mediawiki/guitar/index.php?title = WebGuitar #EFG.2FGUI_Visualizer

您在那里看到的節點本身就是可點擊的鏈接。

嘿你可以嘗試這個如果你想像任何其他圖像查看器一樣縮放圖像使用JPanel繪制圖像使用drawImage()方法現在創建一個按鈕,當你單擊按鈕增加框架上面板的大小它出現就像在縮放中查看圖像一樣

自 Java 9 以來,有 VM arguments(實際上意味着用於高 dpi 縮放)可以呈現具有更高縮放因子的應用程序:

java -Dsun.java2d.uiScale=2.0 -jar MyApplication.jar

或者:

java -Dsun.java2d.win.uiScaleX=2.0 -Dsun.java2d.win.uiScaleY=2.0 -jar MyApplication.jar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM