Estoy casi listo con mi verdugo código java. Quiero agregar una imagen en el fondo, aunque.(nightsky.png) ¿Cómo puedo hacer esto en la pintura método de gráficos? He creado un imageicon en el principio.

public HangmanRevised() {
    setSize(600,400);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLayout(new FlowLayout());

    ImageIcon background = new ImageIcon("nightsky.png");
    Letter = new TextField();
    JLabel label = new JLabel("pick a Letter");
    button = new Button("Enter");
    add(label);
    add(button);
    add(Letter);

    button.addActionListener(this);

    createGame(); 
} 

public void paint(Graphics g) {
    super.paint(g);
    g.drawImage(background, 0, 156, Color.green, button);
}

4 Comentarios

  1. 1

    Si usted está pintando la imagen en su tamaño real, no hay necesidad de hacer cualquier pintura personalizada.

    Como ya ha sido sugerido que acaba de agregar el Icono a un JLabel y añadir la etiqueta a su marco (o panel). Entonces, si usted desea que aparezca la imagen en un certion posición dentro de la etiqueta, a continuación, usted sólo tiene que añadir un EmptyBorder a la etiqueta.

  2. 0

    Reemplazando un JPanel, puede rehacer paintComponent() para pintar la imagen y el JPanel sí mismo debe tener una función de pintura para sus hijos (aunque no he probado esta funcionalidad).

    http://www.java2s.com/Code/Java/Swing-JFC/Panelwithbackgroundimage.htm

    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class ImageTest {
    
      public static void main(String[] args) {
        ImagePanel panel = new ImagePanel(new ImageIcon("images/background.png").getImage());
    
        JFrame frame = new JFrame();
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
      }
    }
    
    class ImagePanel extends JPanel {
    
      private Image img;
    
      public ImagePanel(String img) {
        this(new ImageIcon(img).getImage());
      }
    
      public ImagePanel(Image img) {
        this.img = img;
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);
      }
    
      public void paintComponent(Graphics g) {
        g.drawImage(img, 0, 0, null);
      }
    
    }
    • de cualquier manera yo puedo hacer algo como esto?
    • privado de la Imagen img;
    • img = new Image(new ImageIcon(«nighsky.png»));
    • a continuación, en la pintura método de gráficos:
    • g.drawImage(img, 0, 156, null); lo sentimos combate todo el post..no significa hacer de ellas individuales
    • probablemente sea más fácil para poner el ImageIcon en un JLabel.
    • Ok lo hice, y tengo la imagen en la pantalla. Pero ahora me necesitas para posicionar a un determinado lugar. Puede entrar cordinates el uso de un tipo de diseño como borderlayout o algo?
    • Esto es lo que hice hasta ahora: ImageIcon de fondo = new ImageIcon(«nighsky.png»), luego hice: JLabel label2 = new JLabel(fondo), luego hice: add(label2). Pero ahora tengo que colocar en un lugar preciso.
    • Si usted absolutamente debe tener en un lugar específico, a continuación, utilizar una Nula disposición setLayout(null) y, a continuación, coloque a sí mismo a través de setLocation, setSize, aunque el uso de un null diseño es casi siempre una mala idea. (Aunque un juego es probablemente una excepción).
    • Sí todavía no puedo entenderlo. Si me puede agregar la imagen de alguna manera en los gráficos método paint luego puedo hacer algo como g.setImage(imagen), pero este no funciona
    • Lagarrigue: puedes editar tu pregunta para mostrar el nuevo código; será más fácil de leer.

  3. 0

    Que usted necesita para poner el fondo en algún lugar, es decir:

    //add the following in the HangmanRevised() constructor (?)
    
    button.addActionListener(this);
    
    //To add
    ImagePanel panel = new ImagePanel(background.getImage());
    JFrame frame = new JFrame();
    frame.getContentPane().add(panel);
    frame.setSize(800, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    add(frame); 
    //end...
    
    createGame(); 
    • puedo poner esto en el público hangmanrevised o debo poner en una clase diferente?
    • No he visto todo el código; pero supongo que el código editado pongo deben trabajar en la hangmanrevised…
    • Me sale un error de compilación diciendo: no se puede encontrar el símbolo para ImagePanel. Las conjeturas?
    • Poner la imagen en un JLabel y añadir la etiqueta en el panel

Dejar respuesta

Please enter your comment!
Please enter your name here