图像未在 JScrollPane

问题描述

我正在开发一个 Swing 应用程序,其中有一个带有不同选项的菜单,应用程序根据该菜单显示一个图像,该图像包含在另一个 JScrollPaneJPanel 中。

最后当你双击图像时,出现关于图像的描述。

我的问题是,当我单击按钮时,会出现 ScrollPaint,但不加载图像。

这是我的代码

VentanaPrincipal

public class VentanaPrincipal extends JFrame {
public VentanaPrincipal() {
        super();
        setTitle("Formulario de Reservas – Manuel Lucas Sánchez");
        createMenu();
        initsComponents(); // Here I setUp the components.
        
    }
    public void cargaPanel(JPanel panel,String ruta) {
        scrollPane.setVisible(true);
        scrollPane.setViewportView(panel);
        
        pFoto = new PanelFoto(ruta);
        scrollPane.add(pFoto);
    }
    
    public PanelFoto getpFoto() {
        return pFoto;
    }
    public void setControlador(Controlador controlador) {
        mntmhbdoble.addActionListener(controlador);
        mntmhbPresidencial.addActionListener(controlador);
        mntmhbSimple.addActionListener(controlador);
        mntmhbSuite.addActionListener(controlador);
        mntmhbSuperior.addActionListener(controlador);
        mntmSalir.addActionListener(controlador);
        mntmseGym.addActionListener(controlador);
        mntmsePisc.addActionListener(controlador);
        mntmseRest.addActionListener(controlador);
    }
}

PanelFoto

public class PanelFoto extends JPanel {

    private Image img;
    private JTextArea txtAreaDescripcion;
    private JScrollPane conteinerFoto;
    private JLabel imageLabel;
    private ImageIcon ii;
    public PanelFoto(String ruta) {
        initsComponents(ruta);
    }
    public PanelFoto() {
        
    }
    private void initsComponents(String ruta) {
    
        setSize(550,600);
        setLayout(null);
/*
        ImageIcon ii = new ImageIcon(file_path);
        jScrollPane1 = new JScrollPane(new JLabel(ii));*/
    
        
        txtAreaDescripcion = new JTextArea();
        txtAreaDescripcion.setBounds(0,449,550,151);
        add(txtAreaDescripcion);
        
        ii = new ImageIcon(ruta);
        conteinerFoto = new JScrollPane(new JLabel(ii));
        conteinerFoto.setBounds(0,449);

        add(conteinerFoto);
    }

    public JTextArea getTxtAreaDescripcion() {
        return txtAreaDescripcion;
    }
    
    public JScrollPane getConteinerFoto() {
        return conteinerFoto;
    }
    
    public void setControlador(Controlador controlador) {
        this.addMouseListener((MouseListener) controlador);
    }

    public Image getImg() {
        return img;
    }

    public void setImg(Image img) {
        this.img = img;
    }
}

控制者

public class Controlador implements ActionListener,MouseListener {

    private VentanaPrincipal vPrincipal;
    private PanelFoto pFoto;
    
    
    public Controlador(VentanaPrincipal vPrincipal,PanelFoto pFoto) {
        this.vPrincipal=vPrincipal;
        this.pFoto=pFoto;
    }
    
    @Override
    public void actionPerformed(ActionEvent ae) {
        
        if(ae.getSource() instanceof JMenu || ae.getSource() instanceof JMenuItem) {
            
            if(((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_HABSIMPLE)) {
                vPrincipal.cargaPanel(pFoto,"img/simple.jpg");
                vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("Superficie de la habitacion: 20 metros\n" + 
                                    "Ducha\n" + 
                                    "Toallas\n" + 
                                    "Secador de  pelo\n" + 
                                    "TV\n" + 
                                    "Politica de humo: no se puede fumar\n" + 
                                    "");
                        }
                    }
                });
                Image img = null;
                try {
                    img = ImageIO.read(new File("img/simple.jpg"));
                } catch (IOException e) {
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(img);
                
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_HABdobLE)) {
                    vPrincipal.cargaPanel(pFoto,"img/doble.jpg");
                    
                    vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("Superficie de la habitacion: 30 m\n" + 
                                    "Ducha \n" + 
                                    "Toallas y albornoces\n" + 
                                    "Secador de  pelo\n" + 
                                    "TV LED\n" + 
                                    "Dos camas dobles");
                        }
                    }
                });
                Image Img = null;
                try {
                    Img = ImageIO.read(new File("img/doble.jpg"));
                } catch (IOException e) {
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(Img);
                
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_HABSUITE)) {
                vPrincipal.cargaPanel(pFoto,"img/suite.jpg");
vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("Superficie de la habitacion: 50 metros\n" + 
                                    "Banera hidromasaje\n" + 
                                    "Todo tipo de amenities\n" + 
                                    "Caja fuerte\n" + 
                                    "Terraza vistas mar\n" + 
                                    "Cama King Size");
                        }
                    }
                });
                Image Img = null;
                try {
                    Img = ImageIO.read(new File("img/suite.jpg"));
                } catch (IOException e) {
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(Img);
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_HABPRESI)) {
                vPrincipal.cargaPanel(pFoto,"img/presidencial.jpg");
                    vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("Superficie de la habitacion: 90 metros\r\n" + 
                                    "SPA privado\r\n" + 
                                    "Servicio de habitacion personal\r\n" + 
                                    "Jardin privado con piscina\r\n" + 
                                    "HomeCinema\r\n" + 
                                    "Cama King Size");
                        }
                        
                    }
                });
                Image Img = null;
                try {
                    Img = ImageIO.read(new File("img/presidencial.jpg"));
                } catch (IOException e) {
                    // Todo Auto-generated catch block
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(Img);
                
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_SERREST)) {
                vPrincipal.cargaPanel(pFoto,"img/restaurante.jpg");
    vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("El ambiente informal y acogedor de nuestro restaurante esta decorado con un estilo mediterraneo moderno. Pruebe una especialidad local o internacional acompañado de un te JING o de un vino fino. La tranquila terraza es ideal para realizar eventos sociales y fiestas con cocteles.");
                        }
                    }
                });
                Image Img = null;
                try {
                    Img = ImageIO.read(new File("img/restaurante.jpg"));
                } catch (IOException e) {
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(Img);
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_SERPISC)) {
                vPrincipal.cargaPanel(pFoto,"img/spa.jpg");
vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("Nuestro spa es un lugar para relajarse y beneficiarse de las propiedades del agua mineromedicinal en sus confortables e innovadoras instalaciones. Nuestro equipo trabaja en la incorporacion de las mejores tecnicas,combinadas con la aplicacion de nuestras aguas mineromedicinales y productos cosmeticos de alta gama,para crear tratamientos unicos para nuestros clientes.\r\n" + 
                                    "");
                        }
                    }
                });
                Image Img = null;
                try {
                    Img = ImageIO.read(new File("img/spa.jpg"));
                } catch (IOException e) {
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(Img);
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_SERGYM)) {
                vPrincipal.cargaPanel(pFoto,"img/gym.jpg");
vPrincipal.getpFoto().addMouseListener(new MouseListener() {
                    
                    @Override
                    public void mouseReleased(MouseEvent e) {
                    }
                    
                    @Override
                    public void mousepressed(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseExited(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseEntered(MouseEvent e) {
                    }
                    
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        if(e.getSource().equals(vPrincipal.getpFoto())) {
                            vPrincipal.getpFoto().getTxtAreaDescripcion().setText("El gimnasio del hotel loving Java pone a su disposicion todas sus maquinas de ultima generacion:\r\n" + 
                                    "Cintas de correr\r\n" + 
                                    "Elipticas\r\n" + 
                                    "Bicicletas estaticas\r\n" + 
                                    "Piscina climatizada\r\n" + 
                                    "Maquinas de musculacion.");
                        }
                        
                    }
                });
                Image Img = null;
                try {
                    Img = ImageIO.read(new File("img/gym.jpg"));
                } catch (IOException e) {
                    e.printstacktrace();
                }
                //ImageIcon ImgIcon = new ImageIcon(Img);
                pFoto.setImg(Img);
                
            }else if (((JMenuItem) ae.getSource()).getText().equals(VentanaPrincipal.MNTM_SALIR)) {
                vPrincipal.confirmarSalida();
            }
        }else if (ae.getSource() instanceof JButton) {
        }else if (ae.getSource() instanceof JTextField) {
            if(ae.getSource().equals(vPrincipal.getTxtNombre())) {
                if(vPrincipal.getTxtNombre().getText().length()<3) {
                    vPrincipal.getTxtNombre().setBackground(Color.RED);
                }
                
            }else if (ae.getSource().equals(vPrincipal.getTxtApellidos())) {
                if(vPrincipal.getTxtApellidos().getText().length()<3) {
                    vPrincipal.getTxtApellidos().setBackground(Color.RED);
                }
            }
        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if(e.getSource().equals(pFoto)) {
            pFoto.getTxtAreaDescripcion().setVisible(true);
            pFoto.getTxtAreaDescripcion().setEnabled(true);
            pFoto.getTxtAreaDescripcion().setEditable(false);
            pFoto.getTxtAreaDescripcion().setText("Descripcion prueba.");
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {
    }

    @Override
    public void mouseExited(MouseEvent e) {
    }

    @Override
    public void mousepressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    }
}

Iniciarapp

public class Inciarapp {

    public static void main(String[] args) {
        
        EventQueue.invokelater(new Runnable() {
            @Override
            public void run() {
                VentanaPrincipal vPrincipal = new VentanaPrincipal();
                PanelFoto pFoto = vPrincipal.getpFoto();
                Controlador controlador = new Controlador(vPrincipal,pFoto);
                vPrincipal.setControlador(controlador);
                pFoto.setControlador(controlador);
                vPrincipal.hacerVisible();
            }
        });
    }
}

我希望你能帮忙,在这种情况下,提前感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)