1
我正在修改彈出式菜單中某些JMenuItems的外觀,它基於一些參數和當前選擇的菜單項。設置與Nimbus的JMenuItems邊界LaF
這是一個位的僞代碼(假,因爲它不顯示所有複雜的流程,但只有相關部分設置菜單項的屬性):
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使用我的自定義邊框?
感謝。我已經去覆蓋'paintComponent()'和'paintBorder()'。我並不完全高興,但這是最容易做到的,而不會破壞其他LaF。 – radlan 2013-03-27 14:42:11