style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

¿Por qué desaparecen y aparecen lo botones del frame?

Saludos.

Hace poco que he estado usando GUI's en JAVA, y me he puesto a investigar sobre como poner imágenes de fondo en el frame. Pude poner la imagen de fondo, sin embargo, cuando agrego los botones al correr la aplicación me salen los botones sin la imagen de fondo, si maximizo la ventana aparece la imagen y los botones no (para que me aparezcan tengo que andar pasando el cursor por debajo del frame y luego vuelve a desaparecer la ventana). Este es el código que tengo por el momento:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;

/**
 *
 * @author ArCiGo
 */

public class Scenary extends JFrame {

    static JFrame scenaryPro = new JFrame("My Scenary");
    private ImageIcon backgroundImage = new ImageIcon(getClass().getResource("Telondeteatro_i1.jpg"));
   
    Toolkit theKit = scenaryPro.getToolkit();
    Dimension wndSize = theKit.getScreenSize();
    Dimension size=new Dimension(80,20);
   
//    private JPanel buttonPanel;
   
    //Constructor
    public Scenary() {
        super("My Scenary");
       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(backgroundImage.getIconWidth(), backgroundImage.getIconHeight());

        setBounds(wndSize.width / 4, wndSize.height / 4, wndSize.width / 2, wndSize.height / 2);
       
        FlowLayout flow=new FlowLayout(FlowLayout.CENTER, 20, 30);
        Container content=scenaryPro.getContentPane();
        content.setLayout(flow);
        EtchedBorder edge=new EtchedBorder(EtchedBorder.RAISED);
        JButton button=null;
        content.add(button=new JButton("1"));
        button.setPreferredSize(size);
        button.setBorder(edge);
        content.add(button=new JButton("2"));
        button.setPreferredSize(size);
        button.setBorder(edge);
        content.add(button=new JButton("3"));
        button.setPreferredSize(size);
        button.setBorder(edge);
        add(content, BorderLayout.SOUTH);
        scenaryPro.pack();
    }

    //Override the method paint
    @Override
    public void paint(Graphics g) {
        if (backgroundImage != null) {
            g.drawImage(backgroundImage.getImage(), 0, 0, getWidth(), getHeight(), null);
        }
    }

    public static void main(String[] args) {
       
        Scenary test = new Scenary();
        test.setVisible(true);
               
    }
}

Aun no agrego acciones a los botones, pero por lo que veo tengo que hacer métodos aparte para no llenar el constructor de tantas líneas de código.

Espero puedan ayudarme, y de antemano gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La clave esta en usar un

La clave esta en usar un JPanel modificado y usando el metodo paintBorder pintas el borde del JPanel con la imagen que deseas. Te paso la clase:

import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 *
 * @author Hilario
 */

public class PanelPintado extends JPanel{
ImageIcon logo;
    public PanelPintado() {
        logo=new ImageIcon(getClass().getResource("rott21.jpg"));
    }

 public void paintBorder(Graphics g){
    super.paintComponents(g);
    g.drawImage(logo.getImage(),0,0, getSize().width, getSize().height, null);
}
}

y modificas las siguientes lineas:
-en vez de usar Container content=scenaryPro.getContentPane(); usa esto: PanelPintado content=new PanelPintado();
-al aderir el panel add(content, BorderLayout.SOUTH); cambialo por esto: add(content);
-y quita el metodo paint

Imagen de ArCiGo

Gracias

Lo pude terminar inmediatamente después de publicar la pregunta, mi error era lo que me decías de usar todo en un JFrame, y o modifiqué para usarlo en un JPanel, más o menos me quedó así:

import java.io.IOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.border.*;
import javax.imageio.*;

/**
  * @author ArCiGo
 */

public class Scenary extends JPanel {

    static JFrame scenaryPro = new JFrame("My Scenary");
    private ImageIcon backgroundImage = new ImageIcon(getClass().getResource("Telondeteatro_i1.jpg"));
    Toolkit theKit = scenaryPro.getToolkit();
    Dimension wndSize = theKit.getScreenSize();
    Dimension size = new Dimension(160, 50);
   
    private JButton one;
    private JButton two;
    private JButton three;
   
    //Constructor
    public Scenary(){
        setSize(backgroundImage.getIconWidth(), backgroundImage.getIconHeight());

        setBounds(wndSize.width / 4, wndSize.height / 4, wndSize.width / 2, wndSize.height / 2);

        FlowLayout flow = new FlowLayout(FlowLayout.CENTER, 20, 30);
        Container content = scenaryPro.getContentPane();
        content.setLayout(flow);
        EtchedBorder edge = new EtchedBorder(EtchedBorder.RAISED);
       
        Icon imageO=new ImageIcon(getClass().getResource("CodeImage0.gif"));
        Icon imageI=new ImageIcon(getClass().getResource("CodeImageI.gif"));
        content.add(one = new JButton("\"Chepina\"", imageO));
        one.setRolloverIcon(imageI);
        one.setPreferredSize(size);
        one.setBorder(edge);
       
        Icon imageII=new ImageIcon(getClass().getResource("CodeImageIV.gif"));
        Icon imageIII=new ImageIcon(getClass().getResource("CodeImageIII.gif"));
        content.add(two = new JButton("\"Ninio Bonito\"", imageII));
        two.setRolloverIcon(imageIII);
        two.setPreferredSize(size);
        two.setBorder(edge);
       
        Icon imageIV=new ImageIcon(getClass().getResource("CodeImageII.gif"));
        Icon imageV=new ImageIcon(getClass().getResource("CodeImageVI.gif"));
        content.add(three = new JButton("\"El Peje\"", imageIV));
        three.setRolloverIcon(imageV);
        three.setPreferredSize(size);
        three.setBorder(edge);
       
        add(content, BorderLayout.SOUTH);
        scenaryPro.pack();
       
        ButtonHandler testeando=new ButtonHandler();
        one.addActionListener(testeando);
        two.addActionListener(testeando);
        three.addActionListener(testeando);
    }
   
    private class ButtonHandler implements ActionListener{
       
        public void actionPerformed(ActionEvent e){
           
            Object control=e.getSource();
            if(control.equals(one)){
                JOptionPane.showMessageDialog(Scenary.this, String.format("Ex secretaria de Educacion en Mexico, \n rumbo a la \"Sila Grande\""));
            }
            else if(control.equals(two)){
                JOptionPane.showMessageDialog(Scenary.this, String.format("Ex gobernador del Estado de Mexico, \n ahora candidato del PRI a la presidencia de México rumbo al \n 1 de Julio de 2012"));
            }
            else if(control.equals(three)){
                JOptionPane.showMessageDialog(Scenary.this, String.format("\"Presidente\" legitimo de Mexico, \n ahora candidaro del PRD a la presidencia de Mexico."));
            }
           
        }
       
    }

    //Override the method paint
    @Override
    public void paint(Graphics g) {
        if (backgroundImage != null) {
            g.drawImage(backgroundImage.getImage(), 0, 0, getWidth(), getHeight(), null);
        }
    }
}

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">