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

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

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

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

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. Немного погуглив,...

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

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

4
 Аватар для skaiver
120 / 38 / 11
Регистрация: 02.03.2011
Сообщений: 218
02.08.2015, 02:45 2
Лучший ответ Сообщение было отмечено 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  [ТС] 3
skaiver, большое спасибо! А с использованием swing есть идеи?
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
06.08.2015, 15:38 4
В гугле забанили?
1
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 3
06.08.2015, 18:17  [ТС] 5
Всем спасибо за участие, все заработало, может кому пригодиться:
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
06.08.2015, 18:17
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2015, 18:17
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование Go (Golang) в Highload-проектах: преимущества и особенности
bytestream 25.01.2025
В мире высоконагруженных систем выбор правильного инструментария играет ключевую роль в успехе проекта. Go (Golang) представляет собой относительно молодой язык программирования, который быстро. . .
Откуда у float лишние цифры в конце дробной части. Представление чисел с плавающей точкой
bytestream 25.01.2025
При разработке программного обеспечения часто возникает необходимость работать с вещественными числами, которые содержат дробную часть. В современных компьютерных системах такие числа представляются. . .
Как использовать глобальную переменную в функции в Python
bytestream 25.01.2025
В программировании на Python глобальные переменные представляют собой особый тип переменных, которые доступны для использования во всех частях программы, включая различные функции, классы и модули. . . .
Как в цикле обойти все элементы map в Java
bytestream 25.01.2025
В разработке на Java одной из наиболее востребованных структур данных является интерфейс Map, который предоставляет эффективный способ хранения и управления парами "ключ-значение". Разработчики. . .
Для чего нужен UserManager.isU­serAGoat(­) в Android и как это использовать
bytestream 25.01.2025
В мире Android-разработки существует множество интересных и порой загадочных функций, о которых знают далеко не все разработчики. Одной из таких функций является метод UserManager. isUserAGoat(),. . .
Как обойти масси в JavaScript. Всё о циклах
bytestream 25.01.2025
JavaScript представляет собой мощный язык программирования, широко используемый в веб-разработке, где массивы и циклы являются фундаментальными концепциями для эффективной работы с данными. Массив в. . .
Как сделать, чтобы существующая ветка отслеживала удалённую в Git. Связывание локальных и удалённых веток
bytestream 25.01.2025
В разработке программного обеспечения системы контроля версий стали неотъемлемой частью процесса создания качественного программного продукта. Эти инструменты позволяют разработчикам эффективно. . .
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru