比較的簡単ですが、JMenuBar の背景色を設定するにはどうすればよいですか?
私はもう試した:
MenuBar m = new MenuBar() {
void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setBackground(Color.yellow);
g2.fillRect(0, 0, getWidth(), getHeight());
}
でも何もない
比較的簡単ですが、JMenuBar の背景色を設定するにはどうすればよいですか?
私はもう試した:
MenuBar m = new MenuBar() {
void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setBackground(Color.yellow);
g2.fillRect(0, 0, getWidth(), getHeight());
}
でも何もない
MadProgrammerのアプローチでは、メニューバーの背景が 2 回ペイントされます。1回は UI によって (たとえば、Windows ではグラデーションになる可能性があり、ペイントに時間がかかります)、もう 1 回はpaintComponentメソッドのコード (古い背景の上) によってペイントされます。
メニューバー UI を BasicMenuBarUI に基づいた独自のものに置き換えることをお勧めします。
menuBar.setUI ( new BasicMenuBarUI ()
{
public void paint ( Graphics g, JComponent c )
{
g.setColor ( Color.RED );
g.fillRect ( 0, 0, c.getWidth (), c.getHeight () );
}
} );
メニューバーを作成するたびに特定のコンポーネントを使用する必要がないように、すべてのメニューバーに対してその UI をグローバルに設定することもできます。
UIManager.put ( "MenuBarUI", MyMenuBarUI.class.getCanonicalName () );
ここでの MyMenuBarUI クラスは、すべてのメニューバーに固有の UI です。
まず、あなたが示したJMenuBar
のは ではなく でMenuBar
あり、大きな違いがあります。を使用してみて、JMenuBar
を使用setBackground
して背景色を変更します
Vulcan からのフィードバックから更新
setBackground
さて、うまくいかない場合は、これでうまくいきます ;)
public class MyMenuBar extends JMenuBar {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
}
}