С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/40: Рейтинг темы: голосов - 40, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3

Вывод изображения на JPanel

01.08.2015, 20:06. Показов 8314. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Делаю приложение для вывода выбранной картинки на панель. Но картинка к сожалению не отрисовывается на панели. Помогите пожалуйста разобраться в том, что я делаю не так. Спасибо!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package saprtest;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
 
public class SaprTest {
 
    JFrame jf = new JFrame("Тестовое окно");
    JPanel jp1 = new JPanel(new BorderLayout());
    WorkPanel wp1 = new WorkPanel();
    JButton jb1 = new JButton("Открыть");
    JButton jb2 = new JButton("Выход");
    JOptionPane jop1 = new JOptionPane();
    
        
    public static void main(String[] args) {
        SaprTest sp1 = new SaprTest();
        sp1.start();
    }
    
    public void start (){
        jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.add(jp1, BorderLayout.WEST);
        jp1.setSize(100, 100);
        jp1.add(jb1, BorderLayout.NORTH);
        jb1.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent ae) {
                JFileChooser openFile = new JFileChooser();
                openFile.setDialogTitle("Выбор графической подложки");
                openFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
                //openFile.setFileFilter(new MyFileFilter(".jpg", ""));
                int ret = openFile.showOpenDialog(null);
                if (ret == JFileChooser.APPROVE_OPTION){
                    try {
                        File file = openFile.getSelectedFile();
                        Image image = ImageIO.read(file);
                        Graphics gr = image.getGraphics();
                        wp1.paintComponent(gr, image);
                    } 
                    catch (FileNotFoundException ex){
                        JOptionPane.showMessageDialog(jop1, "Такого файла не существует");
                    }
                    catch (IOException ex) {
                        JOptionPane.showMessageDialog(jop1, "Исключение ввода-вывода");
                    }
                } 
            }
        });    
        jp1.add(jb2, BorderLayout.SOUTH);       
        jb2.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent ae) {
                System.exit(0);
            }
        });
        jf.add(wp1, BorderLayout.CENTER);
        wp1.setVisible(true);
        //wp1.setBackground(Color.black);
        wp1.setPreferredSize(new Dimension(100, 100));
        }
    
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package saprtest;
 
import java.awt.Graphics;
import java.awt.Image;
 
public class WorkPanel extends javax.swing.JPanel {
        
    @Override
    protected void paintComponent (Graphics g) {
        super.paintComponent(g);
        g.drawImage(null, 0, 0, this);
    } 
    protected void paintComponent(Graphics g, Image img){
        super.paintComponent(g);
        g.drawImage(img, 0, 0, this);
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2015, 20:06
Ответы с готовыми решениями:

Вывод изображения на JPanel
Программа должна выводить определенное изображение на панель по нажатию соответствующей кнопки. Как я понимаю решение: надо создать метод,...

Сохранение изображения с jPanel
Здраствуйте. Возникла проблема с сохранением изображения нарисованого на JPanel. Немного погуглив, нашел пару способов это сделать. 1....

Вывод картинки на JPanel
Пожалуйста подскажите, необходимо вывести фото на JPanel. Приведен мой код, где ошибка? public class FotoLable extends JFrame { ...

4
 Аватар для skaiver
120 / 38 / 11
Регистрация: 02.03.2011
Сообщений: 218
02.08.2015, 02:45
Лучший ответ Сообщение было отмечено fireiexe как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package javafxpixel;
 
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
 
/**
 * @web [url]http://java-buddy.blogspot.com/[/url]
 */
public class JavaFXPixel extends Application {
    
    ImageView myImageView;
    
    @Override
    public void start(Stage primaryStage) {
        
        Button btnLoad = new Button("Load");
        btnLoad.setOnAction(btnLoadEventListener);
        
        myImageView = new ImageView();        
        
        VBox rootBox = new VBox();
        rootBox.getChildren().addAll(btnLoad, myImageView);
        
        Scene scene = new Scene(rootBox, 300, 300);
        
        primaryStage.setTitle("java-buddy.blogspot.com");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
 
    public static void main(String[] args) {
        launch(args);
    }
    
    EventHandler<ActionEvent> btnLoadEventListener
    = new EventHandler<ActionEvent>(){
 
        @Override
        public void handle(ActionEvent t) {
            FileChooser fileChooser = new FileChooser();
            
            //Set extension filter
            FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
            FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
            fileChooser.getExtensionFilters().addAll(extFilterJPG, extFilterPNG);
             
            //Show open file dialog
            File file = fileChooser.showOpenDialog(null);
                      
            try {
                BufferedImage bufferedImage = ImageIO.read(file);
                Image image = SwingFXUtils.toFXImage(bufferedImage, null);
                myImageView.setImage(image);
            } catch (IOException ex) {
                Logger.getLogger(JavaFXPixel.class.getName()).log(Level.SEVERE, null, ex);
            }
 
        }
    };
}
1
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3
02.08.2015, 18:48  [ТС]
skaiver, большое спасибо! А с использованием swing есть идеи?
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
06.08.2015, 15:38
В гугле забанили?
1
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3
06.08.2015, 18:17  [ТС]
Всем спасибо за участие, все заработало, может кому пригодиться:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package saprtest;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
 
public class SaprTest {
 
    JFrame jf = new JFrame("Тестовое окно");
    JPanel jp1 = new JPanel(new BorderLayout());
    WorkPanel wp1 = new WorkPanel();
    JButton jb1 = new JButton("Открыть");
    JButton jb2 = new JButton("Выход");
    JOptionPane jop1 = new JOptionPane();
    BufferedImage bufferedImage = null;
             
    public static void main(String[] args) {
        SaprTest sp1 = new SaprTest();
        sp1.start();
    }
    
    public void start (){
        jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.add(jp1, BorderLayout.WEST);
        jf.add(wp1, BorderLayout.CENTER);
        wp1.setVisible(true);
        wp1.setPreferredSize(new Dimension(100, 100));
        jp1.setSize(100, 100);
        jp1.add(jb1, BorderLayout.NORTH);
        jb1.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent ae) {
                JFileChooser openFile = new JFileChooser();
                openFile.setDialogTitle("Выбор графической подложки");
                openFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
                openFile.setFileFilter(new MyFileFilter(".jpg", ""));
                int ret = openFile.showOpenDialog(null);
                if (ret == JFileChooser.APPROVE_OPTION){
                    try {
                        File file = openFile.getSelectedFile();
                        bufferedImage = ImageIO.read(file);
                        wp1.setImage(bufferedImage);
                        wp1.repaint();
                    } 
                    catch (FileNotFoundException ex){
                        JOptionPane.showMessageDialog(jop1, "Такого файла не существует");
                    }
                    catch (IOException ex) {
                        JOptionPane.showMessageDialog(jop1, "Исключение ввода-вывода");
                    }
                } 
            }
        });    
        jp1.add(jb2, BorderLayout.SOUTH);       
        jb2.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent ae) {
                System.exit(0);
            }
        });
        
    }
    
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package saprtest;
 
import java.awt.Graphics;
import java.awt.image.BufferedImage;
 
public class WorkPanel extends javax.swing.JPanel {
    
    BufferedImage image = null;
    
    public void setImage (BufferedImage img){
        image = img;
    }
    
    @Override
    protected void paintComponent (Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    } 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2015, 18:17
Помогаю со студенческими работами здесь

Добавление JPanel на JPanel, не отображаются те, которые добавлены сверху
Здравствуйте. У меня есть панель fon на которой у меня картинка с фоном и 15 панелей на которых нарисованы шарики,пытаюсь добавить панели с...

Вывод картинок на объект JPanel
Друзья подскажите, не могу в сети найти нормального ответа на тему как разместить на JPanel рисунок из файла. Вот пример моего кода. ...

Вывод картинок на объект JPanel
Друзья подскажите, не могу в сети найти нормального ответа на тему как разместить на JPanel рисунок из файла. Вот пример моего кода. ...

Вывод рисунка jpg на jPanel
Кто знает подскажите как это делается без лишних классов? Так как по таймеру будет обновляться то чем проще тем лучше, вот что пока...

Вывод текущей даты на JPanel
Не совсем понимаю как вывести текущую дату(без времени) на jPanel. Нужна подсказка:)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru