Prova questo programmino che ho realizzato.
codice:
import java.awt.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;
public class TestFrame extends JFrame
{
public TestFrame ()
{
super ("Test Frame");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (300, 300);
try
{
Image img = ImageIO.read (new URL ("http://img78.imageshack.us/img78/7571/backua5.jpg"));
JPanel panel = new BackgroundPanel (img);
setContentPane (panel);
}
catch (Exception e)
{
System.out.println (e);
}
JTextField textField1 = new JTextField ("Hello World!");
JTextArea textArea = new JTextArea ("Hello World!");
JTextField textField2 = new JTextField ("Hello World!");
JScrollPane scrollPane = new JScrollPane (textArea);
textField1.setOpaque (false);
textArea.setOpaque (false);
textField2.setOpaque (false);
scrollPane.getViewport().setOpaque (false);
scrollPane.setOpaque (false);
Container contentPane = getContentPane ();
contentPane.add (textField1, BorderLayout.NORTH);
contentPane.add (scrollPane, BorderLayout.CENTER);
contentPane.add (textField2, BorderLayout.SOUTH);
}
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
TestFrame f = new TestFrame ();
f.setVisible (true);
}
});
}
}
class BackgroundPanel extends JPanel
{
private Image img;
public BackgroundPanel (Image img)
{
super (new BorderLayout ());
this.img = img;
}
public void paintComponent (Graphics g)
{
super.paintComponent (g);
g.drawImage (img, 0, 0, this);
}
}
Ho semplicemente definito un panel di background in cui paintComponent() disegna la immagine e questo panel l'ho impostato come content-pane del JFrame. Dopodiché nel content-pane ho aggiunto 2 JTextField e 1 JTextArea (in un JScrollPane) impostandoli come trasparenti (non opachi).