Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Problem with the background of a JDesktopPane

843806Apr 10 2009 — edited Apr 11 2009
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);
    }
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 9 2009
Added on Apr 10 2009
4 comments
415 views