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):
Classe JToolBarBg: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(); } }
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); } } }


Rispondi quotando