我想獲取對我在GUI中控件的底層java組件的引用,以便自定義它們的外觀。在matlab中獲取控件的底層java組件的快速方法
我知道findjobj從亞伊爾奧特曼它的作品真的很好:
myLink = uicontrol('String', '<html><u>Button that looks like a link.</u></html>'); jObj = findjobj(myLink); jObj.setContentAreaFilled(0);
不幸的是這個解決方案是相當緩慢當有一個的控制來定製「批」(因爲它必須解析圖中對象的完整層次結構,並對每個控件進行自定義)。
此外,圖形必須可見(否則控件未實例化,並且無法找到java引用)。另外,它必須被移動屏幕,以避免用戶在
findjobj
運行去觸摸它(有時把事情崩潰,因爲findjobj
某種程度上依賴於控件的位置找到它們,同時內部還呼籲drawnow
哪些更新位置)......在有些機器,即使只有少數幾個控件可以自定義,也可能需要10秒鐘才能顯示數字(大部分時間用於
findjobj
)。我也是從亞伊爾奧特曼不斷了解uicomponent直接創建控件和獲取句柄到底層Java組件在一個鏡頭:
[myLink, jObj] = uicomponent('Style', 'JButton', 'String', '<html><u>Button that looks like a link.</u></html>'); jObj.setContentAreaFilled(0);
遺憾的是這裏的parent屬性,只能是圖,當然我的控件放在容器中,以便很好地處理大小調整和其他許多事情(並且gui佈局包含器不是用於組件工作的有效hg句柄)...
所以想知道是否可以有任何其他快速解決方案爲我的GUI中的控件獲取底層Java組件? ...注:我主要只需要有看起來像超鏈接或動畫gif的按鈕(即帶有htlm text/img的無邊框按鈕)。
我還看不出有'javacomponent'自動調整其包裝'uipanel'做了'uiextras內。 (看我的[測試代碼](https://gist.github.com/CitizenInsane/0dccb5d8b7bbf389bbe8)),但這看起來像是一個很好的方向。在驗證您的答案之前,我需要更深入地瞭解這一點,但會讓您知道。非常感謝。 – CitizenInsane
引用你的測試代碼:從'javacomponent'返回第二個輸出參數,即做'[jBtn,hjBtn] = javacomponent(...'。這個額外的輸出參數給出'jBtn'的句柄包裝,然後'set hjBtn,'Units','normalized')'這樣,我就可以獲得我想要的調整行爲 –
謝謝你們,它像一個魅力,我肯定需要購買@yair的書現在。 – CitizenInsane