Foro sobre Java SE > imagen de fondo y jmenubar
Creo que tu problema está aquí:
setSize(imagen.getIconWidth(),imagen.getIconHeight());
No se puede ajustar el contentpane de un JFrame al tamaño de la imagen, sino al revés.
Por otro lado, setSize en el constructor no hace nada útil: seguro que te establece las dimensiones del JPanel en (0,0)
Prueba a comentar esa línea, a ver qué ves entonces.
Si me funciono, gracias
Disculpa, quise aplicarlo a otro proyecto y si le quito esa linea que me dices no sale, y si la pongo si sale, pero no completa la imagen y el menu no se ve pero si doy click donde esta, si me lo muestra, mira:
Class Principal
package Formularios;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import Formularios.Fondoj;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.border.EmptyBorder;
public class Principal extends JFrame{
private static final long serialVersionUID = 1L;
private JFrame frame;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Principal window = new Principal();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Principal() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setTitle("Sistema de Ventas");
frame.setResizable(false);
frame.setBounds(400, 100, 525, 384);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
//setContentPane(frame);
JPanel panel = new JPanel();
panel.setBounds(0, 355, 519, 1);
panel = new Fondoj("/imagenes/ecommerce.png");
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
frame.getContentPane().add(panel);
JMenuBar menuBar = new JMenuBar();
menuBar.setBounds(0, 0, 519, 21);
frame.getContentPane().add(menuBar);
JMenu mnClientes = new JMenu("Clientes");
mnClientes.setFont(new Font("Arial", Font.PLAIN, 14));
menuBar.add(mnClientes);
JMenuItem mntmNuevo = new JMenuItem("Nuevo");
mntmNuevo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
NuevoCliente NuevoCliente=new NuevoCliente();
NuevoCliente.setModal(true);
NuevoCliente.setVisible(true);
}
});
mntmNuevo.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\User group.png"));
mntmNuevo.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnClientes.add(mntmNuevo);
JMenuItem mntmEditar = new JMenuItem("Editar");
mntmEditar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
EditarCliente EditarCliente=new EditarCliente();
EditarCliente.setModal(true);
EditarCliente.setVisible(true);
}
});
mntmEditar.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Modify.png"));
mntmEditar.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnClientes.add(mntmEditar);
JMenuItem mntmBuscar = new JMenuItem("Buscar");
mntmBuscar.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Find.png"));
mnClientes.add(mntmBuscar);
JMenu mnProveedores = new JMenu("Proveedores");
mnProveedores.setFont(new Font("Arial", Font.PLAIN, 14));
menuBar.add(mnProveedores);
JMenuItem mntmNuevo_1 = new JMenuItem("Nuevo");
mntmNuevo_1.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\New.png"));
mntmNuevo_1.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnProveedores.add(mntmNuevo_1);
JMenuItem mntmEditar_1 = new JMenuItem("Editar");
mntmEditar_1.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Modify.png"));
mntmEditar_1.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnProveedores.add(mntmEditar_1);
JMenuItem mntmBuscar_1 = new JMenuItem("Buscar");
mntmBuscar_1.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Find.png"));
mnProveedores.add(mntmBuscar_1);
JMenu mnProductos = new JMenu("Productos");
mnProductos.setFont(new Font("Arial", Font.PLAIN, 14));
menuBar.add(mnProductos);
JMenuItem mntmNuevo_2 = new JMenuItem("Nuevo");
mntmNuevo_2.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\New.png"));
mntmNuevo_2.setSelectedIcon(null);
mntmNuevo_2.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnProductos.add(mntmNuevo_2);
JMenuItem mntmEditar_2 = new JMenuItem("Editar");
mntmEditar_2.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Modify.png"));
mntmEditar_2.setSelectedIcon(null);
mntmEditar_2.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnProductos.add(mntmEditar_2);
JMenuItem mntmBuscar_2 = new JMenuItem("Buscar");
mntmBuscar_2.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Find.png"));
mnProductos.add(mntmBuscar_2);
JMenuItem mntmCategorias = new JMenuItem("Categorias");
mntmCategorias.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Blue tag.png"));
mntmCategorias.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnProductos.add(mntmCategorias);
JMenu mnVentas = new JMenu("Ventas");
mnVentas.setFont(new Font("Arial", Font.PLAIN, 14));
menuBar.add(mnVentas);
JMenuItem mntmNueva = new JMenuItem("Nueva");
mntmNueva.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Buy.png"));
mntmNueva.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnVentas.add(mntmNueva);
JMenuItem mntmEditar_3 = new JMenuItem("Editar");
mntmEditar_3.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Modify.png"));
mntmEditar_3.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mnVentas.add(mntmEditar_3);
JMenuItem mntmBuscar_3 = new JMenuItem("Buscar");
mntmBuscar_3.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Find.png"));
mnVentas.add(mntmBuscar_3);
JMenu mnSalir = new JMenu("Salir");
mnSalir.setFont(new Font("Arial", Font.PLAIN, 14));
mnSalir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
mnSalir.setMnemonic('S');
menuBar.add(mnSalir);
JMenuItem mntmSalir = new JMenuItem("Salir");
mntmSalir.setFont(new Font("Segoe UI", Font.PLAIN, 13));
mntmSalir.setIcon(new ImageIcon("C:\\Users\\kike\\workspace\\Ventas\\src\\imagenes\\Turn off.png"));
mntmSalir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
mnSalir.add(mntmSalir);
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGap(0, 519, Short.MAX_VALUE)
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGap(0, 1, Short.MAX_VALUE)
);
panel.setLayout(gl_panel);
panel.setLayout(null);
}
}
Class Fondoj
package Formularios;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class Fondoj extends JPanel {
ImageIcon imagen;
private static final long serialVersionUID = 1L;
public Fondoj(String nombre) {
imagen=new ImageIcon(getClass().getResource(nombre));
setSize(imagen.getIconWidth(),imagen.getIconHeight());
}
protected void paintComponent(Graphics g){
Dimension d = getSize();
g.drawImage(imagen.getImage(), 0,0, d.width, d.height,null);
this.setOpaque(false);
super.paintComponent(g);
}
}
Puedes apoyarme, o que es lo que tengo que leer para que me quede claro ??
pues de momento agrege esto:
setBounds(0,22,525,384);
setSize(525,384);
//setSize(imagen.getIconWidth(),imagen.getIconHeight());
y comente el setSize, por que no entiendo el por que me pone la imagen encima del jmenubar, pero si doy click en el menu si lo despliega, bueno veo q me falta todavia, leere mas, gracias.
Te sugiero que empieces a probar con el código más sencillo posible; por ejemplo como sigue. Tendrás que adaptar el acceso a la imagen, si quieres probarlo, como es lógico.
public class NewJFrame extends javax.swing.JFrame {
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
}
/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
jRadioButtonMenuItem1 = new javax.swing.JRadioButtonMenuItem();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jMenu1.setText("File");
jMenuItem1.setText("jMenuItem1");
jMenu1.add(jMenuItem1);
jCheckBoxMenuItem1.setSelected(true);
jCheckBoxMenuItem1.setText("jCheckBoxMenuItem1");
jMenu1.add(jCheckBoxMenuItem1);
jRadioButtonMenuItem1.setSelected(true);
jRadioButtonMenuItem1.setText("jRadioButtonMenuItem1");
jMenu1.add(jRadioButtonMenuItem1);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 279, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
@param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(() -> {
NewJFrame frame = new NewJFrame();
Fondo panel = new Fondo("/imagenes/ecommerce.png");
frame.getContentPane().add(panel);
frame.setVisible(true);
});
}
private static class Fondo extends JPanel {
private final ImageIcon imagen;
Fondo(String nombre) {
imagen = new ImageIcon(getClass().getResource(nombre));
}
@Override
public void paintComponent(final Graphics graphics) {
super.paintComponent(graphics);
final Graphics2D g2D = (Graphics2D) graphics;
g2D.drawImage(imagen.getImage(), 0, 0, getWidth(), getHeight(), this);
}
}
// Variables declaration - do not modify
private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem1;
// End of variables declaration
}
ok, agradezco mucho tu ayuda, reamente pude sacarlo, he programado en php y visual basic, como estoy llevando una maestria, pues ahi tenemos la materia de poo y es con java, asi que le estamos dando a los manuales, gracias choces, buen dia
Hola buen dia, he estado batallando y la verdad no se que estoy haciendo mal, en mi proyecto se me ocurrio ponerle una imagen de fondo, pero al momento de poner un jmenubar, este no me lo muestra, corro el programa y me dice q tiene errores pero no me muestra q errores, el codigo es el siguiente:
Class Principal
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import java.awt.Font;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
public class Principal extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Principal frame = new Principal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Principal() {
setTitle("Red Neuronal Perceptron OR");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(400, 100, 435, 196);
contentPane = new Fondo("descartes.jpg");
contentPane.setForeground(new Color(51, 153, 153));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
menuBar.setVisible(true);
JMenu mnInicio = new JMenu("Inicio");
menuBar.add(mnInicio);
JMenuItem mntmArchivo = new JMenuItem("Archivo");
mnInicio.add(mntmArchivo);
JMenuItem mntmGuardar = new JMenuItem("Guardar");
mnInicio.add(mntmGuardar);
JMenu mnSalir = new JMenu("Salir");
menuBar.add(mnSalir);
JMenuItem mntmSalir = new JMenuItem("Salir");
mnSalir.add(mntmSalir);
JButton btnIniciarRna = new JButton("Iniciar RNA");
btnIniciarRna.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
IniciarRNA Iniciar =new IniciarRNA();
Iniciar.setVisible(true);
}
});
btnIniciarRna.setForeground(Color.WHITE);
btnIniciarRna.setBackground(new Color(204, 204, 51));
btnIniciarRna.setMnemonic('I');
btnIniciarRna.setFont(new Font("Tahoma", Font.BOLD, 13));
JButton btnVerDatosRna = new JButton("Ver datos RNA");
btnVerDatosRna.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
VerDatos VerDatos= new VerDatos();
VerDatos.setVisible(true);
}
});
btnVerDatosRna.setForeground(Color.WHITE);
btnVerDatosRna.setBackground(new Color(204, 204, 51));
btnVerDatosRna.setMnemonic('V');
btnVerDatosRna.setFont(new Font("Tahoma", Font.BOLD, 13));
JButton btnSalir = new JButton("Salir");
btnSalir.setForeground(Color.WHITE);
btnSalir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
btnSalir.setBackground(new Color(204, 204, 51));
btnSalir.setMnemonic('S');
btnSalir.setFont(new Font("Tahoma", Font.BOLD, 13));
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(38)
.addComponent(btnIniciarRna)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(btnVerDatosRna)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(btnSalir)
.addContainerGap(60, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap(103, Short.MAX_VALUE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(btnIniciarRna, GroupLayout.PREFERRED_SIZE, 34, GroupLayout.PREFERRED_SIZE)
.addComponent(btnVerDatosRna, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
.addComponent(btnSalir, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
contentPane.setLayout(gl_contentPane);
}
}
Class Fondo
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class Fondo extends JPanel {
ImageIcon imagen;
private static final long serialVersionUID = 1L;
public Fondo(String nombre) {
imagen=new ImageIcon(getClass().getResource(nombre));
setSize(imagen.getIconWidth(),imagen.getIconHeight());
}
protected void paintComponent(Graphics g){
Dimension d = getSize();
g.drawImage(imagen.getImage(), 0,0, d.width, d.height,null);
this.setOpaque(false);
super.paintComponent(g);
}
}