Código de Java - Insertar Imagen en JPanel y Centrado

Imágen de perfil

Insertar Imagen en JPanel y Centradográfica de visualizaciones


Java

Publicado el 02 de Mayo del 2017 por Yacoobs
2.504 visualizaciones desde el 02 de Mayo del 2017. Una media de 56 por semana
En este ejemplo aprenderemos a Inserta diferentes imágenes en JPanels diferentes
Tenemos un JFrame con dos JPanels en diferentes localizaciones, cada uno de ellos
tiene asignado una imagen cargada por medio de un BufferedImage.
Los JPanels deben de tener una determinación como BorderLayout o OverLay Layout
para que la imagen sea introducida en su componente..

Si pulsamos sobre el JPanel 1 este automáticamente centra la imagen, es una muestra mas de
como hacer uso de métodos y la clase Graphics

Espero que les guste el código y aprendan Java una vez mas...

El código es el siguiente:

1

Actualizado el 05 de Septiembre del 2017 (Publicado el 02 de Mayo del 2017)gráfica de visualizaciones de la versión: 1
2.505 visualizaciones desde el 02 de Mayo del 2017. Una media de 56 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
 
 
//Programado por Yacoobs Cort. Mart. 15 de febrero de 2017
 
 
public class Graficos_Panel extends javax.swing.JFrame {
 
 
    public Graficos_Panel() {
 
 
        initComponents();
 
        jPanel1.add(new Insertar_Graficos());
        jPanel2.add(new Insertar_Graficos1());
 
        try {
            //Dentro del File ponemos la ruta exacta de nuestro archivo de imagen a cargar....
            img = ImageIO.read(new File("C:/Imagenes/Mago de hielo1.png"));
            img1 = ImageIO.read(new File("C:/Imagenes/Mago de hielo1.png"));
 
        } catch (IOException ex) {
            Logger.getLogger(Graficos_Panel.class.getName()).log(Level.SEVERE, null, ex);
        }
 
 
 
 
    }
 
    public class Insertar_Graficos extends JComponent{
 
        public void paint(Graphics g){
 
            super.paint(g);
 
            Graphics2D g2 = (Graphics2D) g;
 
            if (img!=null){
               //System.out.println("graficos");
 
               g2.drawImage(img, ancho,alto, this);
               g2.setStroke(new BasicStroke(4));
               g2.setColor(Color.GREEN);
               g2.drawRect(ancho, alto, img.getWidth(), img.getHeight());
 
 
            }
 
        }
 
    }
 
    public class Insertar_Graficos1 extends JComponent{
 
        public void paint(Graphics g){
 
            super.paint(g);
 
            Graphics2D g2 = (Graphics2D) g;
 
            if (img!=null){
 
               //Una de las formas de escalar una imagen es asignar dos parametros mas al método drawImage
               //Los dos primeros establecen la posicion de la imagen
               //Los dos siguientes indican la resocicon Xancho * Yalto
               //En este caso obtengo el tamaño de la imagen ancho y le incremento 100
               //Lo hago tanto en el ancho como en el alto asi Escalamos la imagen 100 pixeles mas de la
               //original
               g2.drawImage(img1, 0,0,img1.getWidth()+100,img.getHeight()+100, this);
 
 
            }
 
        }
 
    }
 
 
 
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
 
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        jPanel1.setBackground(new java.awt.Color(153, 153, 153));
        jPanel1.setForeground(new java.awt.Color(153, 153, 153));
        jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jPanel1MousePressed(evt);
            }
        });
        jPanel1.setLayout(new java.awt.BorderLayout());
 
        jPanel2.setBackground(new java.awt.Color(153, 255, 255));
        jPanel2.setLayout(new java.awt.BorderLayout());
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(39, 39, 39)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 249, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(103, 103, 103)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(96, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(47, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(23, Short.MAX_VALUE))
        );
 
        pack();
    }// </editor-fold>                        
 
    private void jPanel1MousePressed(java.awt.event.MouseEvent evt) {
        System.out.println("Cliquear...");
        //Llamamos a la Clase Centrar Imagen que nos asignaran las cordenadas ancho y alto y calculara
        //la posicion de la imagen
        new Centrar_Imagen(this, img, jPanel1);
        repaint();
    }
 
 
    public static void main(String args[]) {
 
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Graficos_Panel().setVisible(true);
            }
        });
    }
 
    public void setAncho(int ancho) {
        this.ancho = ancho;
    }
 
    public void setAlto(int alto) {
        this.alto = alto;
    }
 
    private int ancho=0,alto=0;
    private BufferedImage img,img1;
    // Variables declaration - do not modify                     
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    // End of variables declaration                   
}
 
 
// Clase encargada de calcular el centrado de la imagen ........
 
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
 
 
public class Centrar_Imagen {
 
    public Centrar_Imagen(Graficos_Panel Gra_Pl, BufferedImage img, JPanel jpanel) {
 
        int ancho_Img = img.getWidth()/2;
 
        int ancho_Panel = jpanel.getWidth()/2;
 
 
        Gra_Pl.setAncho(ancho_Panel-ancho_Img);
 
 
        int alto_Img = img.getHeight()/2;
 
        int alto_Panel = jpanel.getHeight()/2;
 
 
        Gra_Pl.setAlto(alto_Panel-alto_Img);
 
    }
 
}



Comentarios sobre la versión: 1 (0)


No hay comentarios
 

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3970