Сохранять изображение в переменной

У меня есть этот код, чтобы добавлять изображение к одному JLabel:

    public void Cargar_Imagen() { 
    File fichero;
    int resultado;
    VentanaImg_Contacto vi= new VentanaImg_Contacto();

    FileNameExtensionFilter filtro=
            new FileNameExtensionFilter("JPG y PNG", "jpg", "png");

    vi.jfchCargarFoto.setFileFilter(filtro);
    resultado= vi.jfchCargarFoto.showOpenDialog(null);

    if(JFileChooser.APPROVE_OPTION== resultado)
    {
        fichero= vi.jfchCargarFoto.getSelectedFile();

        try {
            ImageIcon icon= new ImageIcon(fichero.toString());
            Icon icono= new ImageIcon(icon.getImage().
                    getScaledInstance(VentanaAgr_Contacto1.lblFoto.getWidth(),
                            VentanaAgr_Contacto1.lblFoto.getHeight(), Image.SCALE_DEFAULT));

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Error al abrir la imagen "+e);
        }
    }else if(JFileChooser.CANCEL_SELECTION == null ? Integer.toString(resultado) == null : JFileChooser.CANCEL_SELECTION.equals(Integer.toString(resultado)))
        {
            VentanaImg_Contacto.jfchCargarFoto.setVisible(false);
        }
}

Я хотел бы знать, как я могу делать для, когда нажмет на кнопку отборное изображение, будет сохранять в переменной, лишенной другого класса, где у меня есть этот код:

    public void Guardar(){
            arreglo.add(new Controlador.Contacto(
            // Aquí debería poner el nombre del JLabel junto con setIcon no es compatible,
            txt_Nombre.getText(), txt_Apellido.getText(), 
            Integer.parseInt(txt_Movil.getText()),
            Integer.parseInt(txt_Casa.getText())));
    }
0
задан 11.06.2016, 01:10
2 ответа

Для этого самое общее состоит в том, чтобы обращать изображение в биты, чтобы сохранять ее в переменной этого типа и вновь строить ее, чтобы мочь понимать лучше эту opciГіn я присоединяю видео, где они объясняют тебе, как сохранять изображение больше отдельно текст, связанный с этим изображением: https://www.youtube.com/watch? v=HeHLvUaZolU

1
ответ дан 24.11.2019, 14:11
  • 1
    Спасибо @JoseRubenAlejandro что-то как это было тем, что он искал –  David Calderon 13.06.2016, 18:13

Ты мог бы делать следующее, измени область твоей переменной icono в глобальную область внутри твоего класса, например:

public class MiClase {
    private Icon icono;

    //demas variables y metodos de la clase
}

помнит тогда что позволяет в твоем методе, что он загружает изображение, инициализация переменной icono

icono= new ImageIcon(icon.getImage()....

В этом же самом классе я предполагаю, что у тебя должна быть инстанция какого-то класса, который он осуществлял бы ActionListener, для того, чтобы, выполнив кнопку; выполни определенное действие.

Поскольку уже у тебя есть переменная icono инициализировавшая (помидор время санкционирования этого, чтобы предотвращать возможные NullPointerException) ты можешь перемещать ее как аргумент в твой другой класс, добро из-за аргумента того же метода сохранять или из-за строителя твоего другого класса.

Из-за аргумента твоего метода сохранять:

public class MiClase {
    private MiOtraClase otra;

    //inicializas la variable icono
    icono = .....

    //la pasas como argumento de metodo a otra clase
    otra.guardar(icono);

   //o por constructor
   otra = new MiOtraClase(icono);
}

Необходимо, чтобы в твоем "другом классе" ты определил твой строитель или твой метод согласно, как ты будешь хранить это

//constructor
private Icon icono;

public MiOtraClase(Icon icono) {
    this.icono = icono;
}

Другая важная тема JAVA обслуживает подобно написанию CamelCase, в твоем коде есть переменные и имена методов, которые не выполняют это, вместо VentanaImg_Contacto ты должен использовать VentanaImgContacto если дело в том, что это класс или ventanaImgContacto если дело в том, что это переменная или имя метода. Имена методов не инициализируются с прописной буквой, пишутся в lowerCamelCase.

Я надеюсь, что он подает тебя.

0
ответ дан 24.11.2019, 14:11
  • 1
    Спасибо за советы @RosendoRopher, perm и # 237; бойся говорить тебе, что для этого я использую patr и # 243; n разработки DAO следовательно, у меня нет никакого класса, который осуществлял бы ActionListener –  David Calderon 11.06.2016, 08:30
  • 2
    Seg и # 250; n tags твоего вопроса ты используешь swing, в alg и # 250; n сторона твоего aplicaci и # 243; n ты должен быть осуществляя такой ActionListener состойте в inner class, по-другому твои кнопки или компоненты в том, чтобы не отвечать и # 237; an в события. DAO имеет в виду слой, который существует между твоей логикой дела и твоим слоем настойчивости. Привет. –  Rosendo Ropher 11.06.2016, 08:40
  • 3
    Если, в этом у тебя есть raz и # 243; n, но я это не осуществляю в этом классе, как очень хорошо ты это сказал, извини мои знания Java они не являются такими передовыми –  David Calderon 11.06.2016, 08:51
  • 4
    Идея состоит в том, чтобы в этом событии (когда ты нажмешь на кнопку) ты переместил твой значок как аргумент в другой класс, как я упоминаю в ответе. Если у тебя остается какое-то сомнение, в команду! –  Rosendo Ropher 11.06.2016, 08:53
  • 5
    Есть какая-то возможность инициализировать чат @RosendoRopher –  David Calderon 11.06.2016, 08:56

Теги

Похожие вопросы