Вывести изображение BufferedImage на JPanel - Java
Формулировка задачи:
Здравствуйте! Подскажите, пожалуйста, как вывести изображение из 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 javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
public class TestFrame extends JFrame {
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("Verdana", 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);
//***************************************************
TestFrame myPanel = new TestFrame();
myPanel.setLayout(new BorderLayout());
myPanel.setPreferredSize(new Dimension(600, 400));
//***************************************************
//**********************Нажатие кнопок****************************
newMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Graphics g = bufferImage.getGraphics();
//Попытался вытянуть как-нибудь из класса GetImage:
//g.drawImage(GetImage.OutputToScrn(img), 0, 0, this);
//Попытался "обновить" чтобы отображалось сразу:
//revalidate();
//repaint();
//}
}
});
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 = null;
try {
img = ImageIO.read(new File("D:\\work\\files\\logo.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
return img;
}
}Решение задачи: «Вывести изображение BufferedImage на JPanel»
textual
Листинг программы
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class MyGetImage {
public static BufferedImage OutputToScrn(BufferedImage img){
BufferedImage image = null;
try {
image = ImageIO.read(new File("airplane.bmp"));
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}