Java swing wczytywanie obrazków.

0

Witam. Mam taki problem jak dodać kolejny obrazek do już powstałego JPanela? Dla zobrazowania o co mi chodzi napisałem prosty kod. W konstruktorze tworze dwa obiekty JLabel i jednemu nadaję obrazek, a drugi tylko inicjuję. Dodaję też button, który po kliknięciu powinien dodawać do zainicjowanego JLabel obrazek.

package ClientAndServer;

import Client.Code.CardReader;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created by Ja on 06.01.2016.
 */
public class test extends JPanel implements ActionListener{

    CardReader cardReader;
    JLabel newCard;

    public test(){


        cardReader = new CardReader();
        JLabel card = new JLabel(new ImageIcon(cardReader.load(401)));
        newCard = new JLabel();
        Button addCard = new Button("Add card");
        addCard.setSize(100,25);
        addCard.setActionCommand("addCard");
        add(card);
        add(addCard);
        add(newCard);
    }


    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame();
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setResizable(false);
            frame.setSize(800,600);
            Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
            frame.setLocation(dimension.width/2-frame.getSize().width/2,
                    dimension.height/2 - frame.getSize().height/2);
            test t1 = new test();
            frame.add(t1);

        });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String tmp = e.getActionCommand();
        if("addCard".equals(tmp)){
            newCard = new JLabel(new ImageIcon(cardReader.load(501)));
        }

    }
}
0

Dlaczego tworzysz nowy obiekt newCard?

    public void actionPerformed(ActionEvent e) {
        String tmp = e.getActionCommand();
        if("addCard".equals(tmp)){
            newCard.setIcon(new ImageIcon(cardReader.load(501)));
        }
 
    }
0

Tak na chłopski rozum mi się wydawało :P ale nie ważne i tak się nie ustawia ten obrazek :(

1

Brakuje (w konstruktorze klasy test)

addCard.addActionListener(this);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.