Impostazione delle immagini di sfondo in JFrame

Sono disponibili metodi per impostare un’immagine come sfondo in un JFrame ?

Non esiste un metodo integrato, ma ci sono diversi modi per farlo. Il modo più semplice in cui posso pensare al momento è:

  1. Creare una sottoclass di JComponent .
  2. Sostituire il paintComponent(Graphics g) per dipingere l’immagine che si desidera visualizzare.
  3. Imposta il riquadro del contenuto di JFrame come sottoclass.

Alcuni esempi di codice:

 class ImagePanel extends JComponent { private Image image; public ImagePanel(Image image) { this.image = image; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, this); } } // elsewhere BufferedImage myImage = ImageIO.read(...); JFrame myJFrame = new JFrame("Image pane"); myJFrame.setContentPane(new ImagePanel(myImage)); 

Nota che questo codice non gestisce il ridimensionamento dell’immagine per adattarsi alla JFrame , se è quello che volevi.

Prova questo :

 import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class Test { public static void main(String[] args) { JFrame f = new JFrame(); try { f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("test.jpg"))))); } catch (IOException e) { e.printStackTrace(); } f.pack(); f.setVisible(true); } } 

A proposito, questo risulterà nel fatto che il riquadro del contenuto non è un contenitore. Se vuoi aggiungere delle cose devi sottoclassi un JPanel e sovrascrivere il metodo paintComponent.

Puoi usare la class del pannello di sfondo . Fa la verniciatura personalizzata come spiegato sopra, ma ti dà le opzioni per visualizzare le dimensioni ridimensionate, piastrellate o normali dell’immagine. Spiega anche come è ansible utilizzare una JLabel con un’immagine come riquadro del contenuto per la cornice.

 import javax.swing.*; import java.awt.*; import java.awt.event.*; class BackgroundImageJFrame extends JFrame { JButton b1; JLabel l1; public BackgroundImageJFrame() { setSize(400,400); setVisible(true); setLayout(new BorderLayout()); JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful_design.png")); add(background); background.setLayout(new FlowLayout()); l1=new JLabel("Here is a button"); b1=new JButton("I am a button"); background.add(l1); background.add(b1); } public static void main(String args[]) { new BackgroundImageJFrame(); } } 

controlla il link sottostante

http://java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html