Как я могу генерировать изображения в JPanel? - PullRequest
0 голосов
/ 21 апреля 2019

Я хочу создавать изображения на моем JPanel с помощью MVC.У меня нет большого опыта работы с Java, поэтому у меня возникли некоторые проблемы.

Я проверил некоторые вопросы по этому поводу, и, скорее всего, я вижу, что люди предлагают JLabel ImageIcon.Поэтому я попытался настроить его, но он не работает.

Просмотр:

public class View extends javax.swing.JFrame {

    public View() {
        initComponents();
    }

    public void addActionListener(ActionListener listener)
    {
        this.jButton1.addActionListener(listener);
    }

    public void drawImage(BufferedImage image)
    {
        JLabel label = new JLabel(new ImageIcon(image));
        this.jPanel1.add(label);
        this.add(jPanel1);
        this.pack();
     }

Контроллер:

public class Controller {

    View view = new View();

    public Controller(View view)
    {
        this.view = view;
        view.addActionListener(new ButtonListener());
    }

    class ButtonListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {

            BufferedImage image = null;
            try {
                image = ImageIO.read(new File(getClass().getClassLoader().getResource("noimg.png").getFile()));
            } catch (IOException ex) {
                ex.printStackTrace();
            }

            view.drawImage(image);
        }

    }
}

Main:

public class Main {

    public static void main(String[] args) {
        View view = new View();
        Controller controller = new Controller(view);

        view.setVisible(true);
 }

Когда я нажимаю кнопку, ничего не происходит.Я хочу, чтобы изображение отображалось на моем JPanel при нажатии кнопки.

1 Ответ

0 голосов
/ 21 апреля 2019

Мне просто нужно было установить размер этикетки.

Вот фиксированный код:

public void drawImage(BufferedImage image)
    {
        JLabel label = new JLabel(new ImageIcon(image));
        label.setLocation(1, 1);
        label.setSize(50, 130);
        this.jPanel1.add(label);
        this.jPanel1.validate();
        this.jPanel1.repaint();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...