Tengo una imagepanel clase que dibuja una imagen en un JPanel. Mi problema es que la imagen parece ser muy pequeño dentro de la jpanel, y no sé por qué.

He hecho todo lo que pude y busqué en la red y que incluso algunos de java libros para este pequeño problema, pero sin ningún éxito. Realmente necesito un poco de ayuda en esto.

Soy extremadamente nuevo en java.

    class Weapons extends JPanel {
    private Image weaponimage = weapon1.getImage();

    @Override
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    if (image != null)
        g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this);
   }
   }

esa es la clase de imagen.

  • Si usted desea ayudar, tienes que publicar algo de código.
  • Es la imagen BufferedImage?
  • Para una mejor ayuda antes, publicar un SSCCE. @mKorbel Agradable etiqueta de ediciones. 🙂
InformationsquelleAutor FartVader | 2013-10-12

3 Comentarios

  1. 6

    El ‘instant fix’ es la pintura de ese elemento en su tamaño natural. E. G. Cambio de esto:

    g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this);

    A este:

    g.drawImage(weaponimage, 0, 0, this);

    Que parece lógico. Un «arma» probablemente debería ser dibujado a tamaño natural.


    ..el problema es que la imagen parece ser muy pequeño dentro de la jpanel,

    No. El problema parece ser que el panel en sí es muy pequeña. La imagen está pintada la anchura y la altura del panel asignado por el diseño.

    Para aumentar el tamaño de la (BG) de la imagen, agregar componentes al panel (apropiada) y mostrar el panel en su tamaño preferido.

    • muchas gracias señor.
  2. 1

    Puede ser su clase este aspecto:

    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import javax.swing.JPanel;
    
        class Weapons extends JPanel {
            //get image according to your application logic
            BufferedImage image;
    
            @Override
            public void paint(Graphics g){
                super.paintComponent(g);
                g.drawImage(image, 0, 0, getWidth() - 1, getHeight() - 1, 0, 0, image.getWidth() - 1, image.getHeight() - 1, null);
            }
    
            public void setImage(BufferedImage image){
                this.image = image;
            }
        }
    
        class Main {
            Weapons weapons;
    
            public void updateWeapons(){
                //create image
                BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR);
                //draw on image
    
                //TO UPDATE WEAPONS GUI, below steps are impotant
                weapons.setImage(image);
                weapons.repaint();
            }
        }

    Tiene que reemplazar paint() método. A continuación, puede establecer la imagen y la llamada a repaint() para actualizar los gráficos en el panel.

    • No, siempre se debe evitar primordial de la pintura whee yo siempre que sea posible, a continuación, llamar a super.paintComponent va a destruir toda la pintura de la cadena, probablemente causando más problemas a lo largo del camino…
    • señor, con respecto a esta respuesta, donde tengo que introducir la cadena para el nombre de archivo de la foto?
    • Usted debe utilizar ImageIO.leer(…) para cargar la imagen desde archivo.
  3. 0

    el uso de un objeto de dimensión para cambiar el tamaño de la imagen

        Weapons picture = new Weapons();
        picture.setPreferredSize(new Dimension(110, 160));
        panel.add(picture);

    hacer esto y puede alargar la duración y la amplitud de su foto como sea necesario.

Dejar respuesta

Please enter your comment!
Please enter your name here