[英]Setting JMenuItems border with Nimbus LaF
我正在基於某些參數和當前選定的菜單項修改彈出菜單中某些JMenuItem的外觀。
這是一些偽代碼(偽代碼,因為它不顯示所有復雜的處理流程,而僅顯示設置菜單項屬性的相關部分):
JMenuItem item= new JMenuItem("text");
Border border= calculateBorderForItem();
item.setBorder(border);
[...]
item.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
Color bg= calculateBackgroundForItem();
item.setBackground(bg);
}
}
這對於默認的Metal LaF以及JGoodies PlasticXP LaF很好,但是對於Nimbus LaF則不行。 Nimbus只是忽略所有這些屬性。
當我設置item.setOpaque(true)
,背景被繪制,但是邊框仍然沒有顯示。 如何強制Nimbus使用我的自定義邊框?
Nimbus LaF
默認情況下忽略setBackground
, setForeground
等。
默認情況下, Nimbus LaF
永遠不會忽略Xxx(Cell)Renderer
setBackground
, setForeground
(在某種程度上與您的問題無關)
有兩種方法(通過覆蓋)
JMenuItem
的paintComponent()
, paintBorder()
, paintChildren
Nimbus默認值中的所有正確鍵 ,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.