Salve a tutti,
sto per la prima volta giocherellando con Swing per capire un po come funziona e, ora come ora, sto provando a settare un'immagine di sfondo ad una mia JToolBar.
Per fare questo ho creato una mia classe JToolBarBg che estende JToolBar e ho riscirtto il metodo paintComponent.
Quando mando in esecuzione il programma sembra che lo sfondo me lo disegni ma si vede appena appena...in pratica si vede un contorno nero in basso e a destra della toolbar (lo sfondo è un'immagine nero sfocato)...come se la mettesse "sotto" alla toolbar e non "dentro".
Per spiegarmi meglio vi posto un'immagine del risultato e il codice:



Classe UI (segnato in grassetto la parte riguardante la toolbar):

codice:
import org.jdesktop.layout.*;
import javax.swing.*;
import java.awt.*;

public class UI extends JFrame{

    UI(){
        initComponents();
    }

    private void initComponents(){
        setTitle("Titolo della form");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        

        //ToolBar
        ImageIcon bg = new ImageIcon("toolbar_bg.jpg");
        JToolBarBg bar = new JToolBarBg("My Toolbar", bg);
        getContentPane().add(bar, BorderLayout.NORTH);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        bar.setRollover(true);
        bar.setFloatable(false);
        
        //Pulsanti ToolBar
        JButton bar1 = new JButton();
        bar1.setText("jButton1");
        bar1.setFocusable(false);
        bar1.setHorizontalTextPosition(SwingConstants.CENTER);
        bar1.setVerticalTextPosition(SwingConstants.BOTTOM);
        bar.add(bar1);

        JButton bar2 = new JButton();
        bar2.setText("jButton2");
        bar2.setFocusable(false);
        bar2.setHorizontalTextPosition(SwingConstants.CENTER);
        bar2.setVerticalTextPosition(SwingConstants.BOTTOM);
        bar.add(bar2);

        JButton bar3 = new JButton();
        bar3.setText("jButton2");
        bar3.setFocusable(false);
        bar3.setHorizontalTextPosition(SwingConstants.CENTER);
        bar3.setVerticalTextPosition(SwingConstants.BOTTOM);
        bar.add(bar3);

        //Layout generale
        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.LEADING)
            .add(bar,GroupLayout.DEFAULT_SIZE, 750, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(bar,GroupLayout.PREFERRED_SIZE, 36,GroupLayout.PREFERRED_SIZE)
                .addContainerGap(438, Short.MAX_VALUE))
        );

        pack();
    }


}
Classe JToolBarBg:

codice:
package provapanel;

public class JToolBarBg extends javax.swing.JToolBar{
    
    private javax.swing.ImageIcon bgImage;

    JToolBarBg(String name, javax.swing.ImageIcon bg) {
        super(name);
        this.bgImage = bg;
        setOpaque(true);
    }

    public void paintComponent(java.awt.Graphics g) {
         super.paintComponent(g);
         if (bgImage != null) {
            java.awt.Dimension size = this.getSize();
            g.drawImage(bgImage.getImage(), 0,0, size.width, size.height, this);
         }
      }

}