Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Вывести изображение из BufferedImage в JPanel


Автор: Gividjan 11.2.2017, 14:56
Доброго времени суток! Подскажите, пожалуйста, как вывести изображение из BufferedImage (находиться в другом классе) в JPanel, т.о. чтобы оно сразу отображалось (т.е. без манипуляций с окном программы).
Заранее благодарю.

Вот, что я наваял:

Код

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
 
public class TestFrame extends JFrame {
    static BufferedImage img = null;
    public static void createGUI() {
        JFrame frame = new JFrame("Test frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(null) ;
        frame.setVisible(true);
        Font font = new Font("Arial", Font.PLAIN, 11);         
        JMenuBar menuBar = new JMenuBar();  
        JMenu fileMenu = new JMenu("Файл");
        fileMenu.setFont(font); 
        JMenuItem newMenu = new JMenuItem("Отобразить");
        newMenu.setFont(font);
        fileMenu.add(newMenu);
        JMenuItem exitItem = new JMenuItem("Выход");
        exitItem.setFont(font);
        fileMenu.add(exitItem);
        
        //***************************************************
        JPanel myPanel = new JPanel();
        myPanel.setLayout(new BorderLayout());
        myPanel.setPreferredSize(new Dimension(600, 400));
        frame.add(myPanel);
        //***************************************************
        
        newMenu.addActionListener(new ActionListener() {           
            public void actionPerformed(ActionEvent e) {
             System.out.println(GetImage.OutputToScrn(img));
             //При нажатии этой кнопки меню, должно появиться изображение
//Удалил свой код, который был тут т.к. он нерабочий
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            }           
        });
        
        exitItem.addActionListener(new ActionListener() {           
            public void actionPerformed(ActionEvent e) {
                System.exit(0);             
            }           
        });
          
        menuBar.add(fileMenu);       
        frame.setJMenuBar(menuBar);
        frame.setPreferredSize(new Dimension(650, 450));
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
 
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createGUI();
            }
        });
    }
}


Код

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class GetImage {
    public static BufferedImage OutputToScrn(BufferedImage img){
        BufferedImage image = null;
        try {
            image = ImageIO.read(new File("D:\\work\\files\\logo.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;
    }    
}



Автор: LSD 13.2.2017, 12:15
http://forum.vingrad.ru/faq/topic-157951.html

Автор: Gividjan 12.3.2017, 16:55
Большое спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)