簡體   English   中英

使用Nimbus LaF設置JMenuItems邊框

[英]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默認情況下忽略setBackgroundsetForeground等。

  • 默認情況下, Nimbus LaF永遠不會忽略Xxx(Cell)Renderer setBackgroundsetForeground (在某種程度上與您的問題無關)


有兩種方法(通過覆蓋)

暫無
暫無

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

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