El problema no está en el JFrame
, el problema está en su código. Podemos pasar el resto de nuestra vida natural adivinando lo que está mal o podemos publicar un código de ejemplo.
Ahora le toca a usted, podemos seguir tratando de tirar suposición equivocada después suposición equivocada de ti, nos frustra, o puede ayudarnos a ayudarle ...
Éstos son dos ejemplos que hice. El primero usa un JLabel
como contenido principal de JPanel
, donde se colocan los componentes secundarios. Agradable y simple.
El segundo usa un JPanel
personalizado que pinta la imagen en el fondo del componente. Luego uso esto para reemplazar el panel de contenido de marcos. Esto es un poco más complicado, pero tiene la ventaja añadida de estado de fácil actualización (en sustitución del panel de contenido no afectará al resto del programa)
Ejemplo 1: JLabel
utilizar como fondo
public class TestBackground {
public static final String BACKGROUND_PATH = "/Volumes/Macintosh HD2/Dropbox/MT015.jpg";
public static void main(String[] args) {
new TestBackground();
}
public TestBackground() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new LabelPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class LabelPane extends JPanel {
public LabelPane() {
BufferedImage bg = null;
try {
bg = ImageIO.read(new File(BACKGROUND_PATH));
} catch (IOException ex) {
ex.printStackTrace();
}
JLabel label = new JLabel(new ImageIcon(bg));
setLayout(new BorderLayout());
add(label);
label.setLayout(new GridBagLayout());
JLabel lblMessage = new JLabel("Look at me!");
lblMessage.setForeground(Color.WHITE);
lblMessage.setFont(lblMessage.getFont().deriveFont(Font.BOLD, 48));
label.add(lblMessage);
}
}
}
Ejemplo 2: La imagen usada como fondo, en sustitución de panel de contenido ...
public class TestBackground {
public static final String BACKGROUND_PATH = "/Volumes/Macintosh HD2/Dropbox/MT015.jpg";
public static void main(String[] args) {
new TestBackground();
}
public TestBackground() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new BackgroundPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class BackgroundPane extends JPanel {
private BufferedImage bg = null;
public BackgroundPane() {
try {
bg = ImageIO.read(new File(BACKGROUND_PATH));
} catch (IOException ex) {
ex.printStackTrace();
}
setLayout(new GridBagLayout());
JLabel lblMessage = new JLabel("Look at me!");
lblMessage.setForeground(Color.WHITE);
lblMessage.setFont(lblMessage.getFont().deriveFont(Font.BOLD, 48));
add(lblMessage);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(1153, 823);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (bg != null) {
g.drawImage(bg, 0, 0, this);
}
}
}
}
¿Está seguro de que el tamaño de la imagen coincide con el de la pantalla? ¿Estás permitiendo que la imagen se expanda o contraiga si no? Considere la posibilidad de crear y publicar un [sscce] (http://sscce.org) demostrando su problema para nosotros. –
'JLabel background = new JLabel (" Nueva etiqueta "); \t \t background.setIcon (new ImageIcon (ProgramDriver.class.getResource ("/ Pictures/GB_Blue.jpg"))); \t \t background.setBounds (0, 0, 652, 496); \t \t Preferences.add (background); ' – flyinghigh
No publique el código en los comentarios ya que están cerca de ser ilegibles. Publique como una edición de su pregunta. Pero parece que el código que ha publicado no parece expandir la * imagen *, así que no me sorprende que tenga un borde. La respuesta de Eng probablemente funcionará mejor, 1+ para él. –