HI, well I'm trying to use an image as background for a JDesktopPane but when I run it the aplication only shows the menu bar, it does have the image as background but I have to resize the aplication in runtime to show the image, can anyone tell how can start the aplication showing the full image from the beginning?
Code of the window:
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JPanel;
import javax.swing.JMenuBar;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
public class Fenster extends JFrame implements ActionListener{
herramientasbd hBd = new herramientasbd();
tableTools tTools = new tableTools();
Connection con=null;
private static JDesktopPane desktop;
JMenu baseDatos = new JMenu("Base de datos");
JMenuItem conectarBD = new JMenuItem("Conectar");
JMenuItem crearBD = new JMenuItem("Crear");
JMenuItem eliminarBD = new JMenuItem("Eliminar");
JMenu modificarBD = new JMenu("Modificar");//Submenú
JMenu salir = new JMenu("Salir");
JMenuItem crearTable = new JMenuItem("Crear tabla");
JMenuItem eliminarTable = new JMenuItem("Eliminar tabla");
JMenuItem respaldarTable = new JMenuItem("Respaldar tabla");
JMenuItem respaldarBD = new JMenuItem("Respaldar base de datos");
JMenuItem listarBD = new JMenuItem("Listar base de datos");
JMenu table = new JMenu("Tabla");
JMenuItem altas = new JMenuItem("Altas");
JMenuItem bajas = new JMenuItem("Bajas");
JMenuItem showTable = new JMenuItem("Mostrar Tabla");
public Fenster(){
desktop = new DesktopConFondo();
((DesktopConFondo) desktop).setImagen("The Divine Conspiracy.jpg");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Datenbasis");
setContentPane(desktop);
setJMenuBar(crearMenuBar());//Ponerle menú a la ventana
pack();
}//Fin del constructor
protected JMenuBar crearMenuBar(){
JMenuBar barra = new JMenuBar();
baseDatos.setToolTipText("Opciones para las bases de datos");
barra.add(baseDatos);
table.setToolTipText("Opciones para las tablas");
barra.add(table);
conectarBD.addActionListener(this);
baseDatos.add(conectarBD);
crearBD.addActionListener(this);
baseDatos.add(crearBD);
eliminarBD.addActionListener(this);
baseDatos.add(eliminarBD);
salir.addActionListener(this);
baseDatos.add(salir);
baseDatos.addSeparator();//Separador entre opciones
crearTable.addActionListener(this);
modificarBD.add(crearTable);
eliminarTable.addActionListener(this);
modificarBD.add(eliminarTable);
respaldarTable.addActionListener(this);
modificarBD.add(respaldarTable);
respaldarBD.addActionListener(this);
modificarBD.add(respaldarBD);
listarBD.addActionListener(this);
modificarBD.add(listarBD);
baseDatos.add(modificarBD);//Se agrega un submenú
salir.addActionListener(this);
baseDatos.add(salir);
//Menú tabla
altas.addActionListener(this);
table.add(altas);
bajas.addActionListener(this);
table.add(bajas);
showTable.addActionListener(this);
table.add(showTable);
return barra;
}
public static void main(String [] args){
try {
// Set System L&F
UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
}
catch (UnsupportedLookAndFeelException e) {
// handle exception
}
catch (ClassNotFoundException e) {
// handle exception
}
catch (InstantiationException e) {
// handle exception
}
catch (IllegalAccessException e) {
// handle exception
}
Fenster meinFenster = new Fenster();
meinFenster.setLocationRelativeTo(null);
meinFenster.setVisible(true);
}//Fin de main
public void actionPerformed(ActionEvent e){
JMenuItem source = (JMenuItem)(e.getSource());
try{
if(source.equals(conectarBD)) con = hBd.conectar();
if(source.equals(crearBD)) hBd.crearBD();
if(source.equals(eliminarBD)) hBd.eliminarBD(con);
if(source.equals(crearTable)) hBd.crearTabla(con);
if(source.equals(eliminarTable)) hBd.eliminarTabla(con);
if(source.equals(respaldarTable)) hBd.respaldarTabla(con);
if(source.equals(respaldarBD)) hBd.respaldarBD(con);
if(source.equals(listarBD)) hBd.listarTablas(con);
if(source.equals(altas)) tTools.altas(con);
if(source.equals(bajas)){
JInternalFrame menuBajas = tTools.bajas(con);
menuBajas.setVisible(true);
desktop.add(menuBajas);
try{
menuBajas.setSelected(true);
}catch(java.beans.PropertyVetoException p) {}
}
if(source.equals(showTable)){
//tTools.mostrarTabla(con);
JInternalFrame tisch = tTools.mostrarTabla(con);
tisch.setVisible(true);
desktop.add(tisch);
try{
tisch.setSelected(true);
}catch(java.beans.PropertyVetoException p) {}
}
if(source.equals(salir)) System.exit(0);
}catch(Exception f){}
}
}//Fin de la claseVentana
Class to set the background:
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
public class DesktopConFondo extends JDesktopPane {
private Image imagen;
public DesktopConFondo() {
}
public DesktopConFondo(String nombreImagen) {
if (nombreImagen != null) {
imagen = new ImageIcon(getClass().getResource(nombreImagen)).getImage();
}
}
public DesktopConFondo(Image imagenInicial) {
if (imagenInicial != null) {
imagen = imagenInicial;
}
}
public void setImagen(String nombreImagen) {
if (nombreImagen != null) {
imagen = new ImageIcon(getClass().getResource(nombreImagen)).getImage();
} else {
imagen = null;
}
repaint();
}
public void setImagen(Image nuevaImagen) {
imagen = nuevaImagen;
repaint();
}
@Override
public void paint(Graphics g) {
if (imagen != null) {
g.drawImage(imagen, 0, 0, getWidth(), getHeight(), this);
setOpaque(false);
} else{
setOpaque(true);
}
super.paint(g);
}
}