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

Как сделать одновременный просмотр слайд-шоу и прослушивание музыки?

31.01.2018, 21:54. Показов 1972. Ответов 7
Метки нет (Все метки)

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

Вот код:

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package animation;
 
 
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.*;
 
import java.awt.Window.Type;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
 
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
 
 
/**
 *
 * @author david davidson|karnezis(Tunyan)
 */
 
public class anija extends JFrame {
 
    JLabel pic;
    Timer tm;
    int x = 0;
    Font font = new Font("Helvetica", Font.BOLD, 40);
    String[] list = {
        "C:/Users/Лилит/Desktop/1.jpg",
        "C:/Users/Лилит/Desktop/4.jpg",
        "C:/Users/Лилит/Desktop/1.jpg",
        "C:/Users/Лилит/Desktop/4.jpg",
        "C:/Users/Лилит/Desktop/1.jpg",
        ""};
 
    public anija() {
        super("Practic Show");
        pic = new JLabel();
        pic.setBounds(10, 0, 788, 462);
        pic.setForeground(Color.white);
        pic.setFont(font);
 
        tm = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ImageIcon ii = getResizedImage(x);
                pic.setText("Кадр не доступен");
                x += 1;
 
                if (x >= list.length) {
                    x = 5;
                    pic.setText("The End");
                }
 
                pic.setIcon(ii);
            }
        });
 
        getContentPane().add(pic);
        tm.start();
        getContentPane().setLayout(null);
        setSize(804, 565);
        getContentPane().setBackground(new Color(0, 0, 255));
        
        JButton btnNewButton = new JButton("\u25BA");
        btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 30));
        btnNewButton.setForeground(Color.BLUE);
        btnNewButton.addActionListener(new ActionListener() {
            
            
            public void actionPerformed(ActionEvent arg0) {
                
     
                        try {
                        
                            FileInputStream f = new FileInputStream("C:/Users/Лилит/Desktop/5.mp3");
                            try {
                                Player player = new Player(f);
                                player.play();
                                
                                
                                
                            } catch (JavaLayerException e){
                                e.printStackTrace();
                            }
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                }
                }
            
            
        });
        btnNewButton.setBounds(10, 480, 97, 35);
        getContentPane().add(btnNewButton);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
 
    public static void main(String[] args) {
        new anija();
    }
 
    private ImageIcon getResizedImage(int i) {
        ImageIcon icon = new ImageIcon(list[i]);
        Image img = icon.getImage();
        
        Image newImg = img.getScaledInstance(pic.getWidth(), pic.getHeight(), Image.SCALE_SMOOTH);
        ImageIcon newImc = new ImageIcon(newImg);
        return newImc;
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2018, 21:54
Ответы с готовыми решениями:

Просмотр изображений. Слайд шоу
Помогите!!Надо сделать к этой программе чтобы когда изображения нет, выводило в окно ,где именно и происходит это слайдшоу ,надпись ...

Как сделать слайд-шоу
В общем, примерно так. В базе данных содержиться информация о товаре, включая путь к изображению товара. Все это выводиться в php. ...

Слайд шоу, переместить кнопки радио на центр в слайд шоу
Здравствуйте как переместить кнопки радио с левой стороны на цент или в право? смотрите скнин шот. Спасибо <div...

7
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
31.01.2018, 22:57
Цитата Сообщение от david karnezis Посмотреть сообщение
на деле же получилось так, что при запуске аудио, мульт останавливается и продолжаться лишь по его окончанию.
А вот не надо такие вещи в GUI-потоке делать.
0
0 / 0 / 0
Регистрация: 19.12.2016
Сообщений: 8
02.02.2018, 00:05  [ТС]
А как нужно сделать чтобы работало нужным образом? Если знаете объясните пожалуйста 😊 Очень прошу)
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
02.02.2018, 00:31
Цитата Сообщение от david karnezis Посмотреть сообщение
А как нужно сделать чтобы работало нужным образом?
Нужно делать не в GUI-потоке, очевидно же. В интернете полно информации, учись гуглить и читать документацию.
0
0 / 0 / 0
Регистрация: 19.12.2016
Сообщений: 8
02.02.2018, 18:59  [ТС]
Я решил отказаться от кнопки. Теперь всё отлично кадры идут параллельно с музыкой.
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
07.02.2018, 19:02
Лучший ответ Сообщение было отмечено david karnezis как решение

Решение

korvin_, простите конечно но что не так с GUI ? на нем прекрасно пишутся скрол-игры с музыкой колизией и программной анимацией. А поделки какую делает Давид вообще пустяк.

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

Добавлено через 24 минуты
david karnezis, музыку попробуйте так запускать, код не проверял но должно работать, я понимаю что вы хотите сделать, я такое много раз делал.

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package base;
 
import java.awt.Color;
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
import javax.swing.JButton;
import javax.swing.JFrame;
 
 
public class test
{
    public File soundGame = new File("data/gameSound.wav");
    public Clip clip;
    private JFrame window = new JFrame("Super Owl");
    private JButton bt = new JButton();
    public AudioInputStream inAudio;
    
    public test()
    {
        window.setSize(800, 600);   
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.getContentPane().setBackground(Color.white);
        window.setLayout(null);
        window.setResizable(false);
        window.setLocationRelativeTo(null);
 
        soundBang();
        makeButton();
        
        window.setVisible(true);
    }
    
    
    public void soundBang()
    {
        try
        {
            inAudio = AudioSystem.getAudioInputStream(soundGame);
            clip = AudioSystem.getClip();
            clip.open(inAudio);
            clip.stop();
            
            FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            gainControl.setValue((float) 1.0);//-10 громкость
        } 
        catch (Exception e)
        {
            //...
        }
    }
    
    public void makeButton()
    {
        bt.setFont(new Font("Courier New", Font.PLAIN | Font.BOLD, 20));
        bt.setMargin(new Insets(0,0,0,0));
        bt.setBounds(320, 500, 160, 30);
        bt.setText("Start");
        bt.setLayout(null);
        
        window.add(bt);
        
        ActionListener actionListener = new GoListener();
        bt.addActionListener(actionListener);
    }
    
    public class GoListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            general();
        }
    }
    
    public void general()
    {
        bt.setVisible(false);
        
        try
        {
            clip.loop(Clip.LOOP_CONTINUOUSLY);
            clip.setFramePosition(0);
            clip.start();
        } 
        catch (Exception ex)
        {
            //...
        }
    }
    
    
    public static void main(String[] args) 
    {
        new test();
    }
    
}
Добавлено через 3 часа 20 минут
музыка, кнопка, зацикленная анимация, ну можете условие повтора убрать )

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package base;
 
import java.awt.Color;
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.Timer;
 
 
 
public class test
{
    public File soundGame = new File("data/gameSound.wav");
    public Clip clip;
    public JFrame window = new JFrame("Super Owl");
    private JButton bt = new JButton();
    public JPanel myCartoon = new JPanel();
    public AudioInputStream inAudio;
    public JLabel[] cartoonItem = new JLabel[4];
    public int fps = 100;
    private int timeLine = 0;
    private Timer fpsTimer;
    public String[] arrCartoon = new String[] {"data/1.png", "data/2.png", "data/3.png", "data/4.png"};
 
    
    
    public test()
    {
        window.setSize(800, 600);   
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.getContentPane().setBackground(Color.black);
        window.setLayout(null);
        window.setResizable(false);
        window.setLocationRelativeTo(null);
 
        soundConstuctor();
        cartoonConstructor();
        makeButton();
        
        window.setVisible(true);
    }
    
    
    public void cartoonConstructor()
    {
        myCartoon.setBounds(368, 236, 63, 63);
        //myCartoon.setBackground(new Color(0,0,0,0));
        myCartoon.setLayout(null);
        myCartoon.setOpaque(false);
        
        for (int i = 0; i < arrCartoon.length; i++)
        {
            cartoonItem[i] = new JLabel();
            cartoonItem[i].setBounds(0, 0, 63, 63);
            ImageIcon enemyPic = new ImageIcon(arrCartoon[i]);
            cartoonItem[i].setIcon(enemyPic);
            cartoonItem[i].setHorizontalAlignment(SwingConstants.CENTER);
            cartoonItem[i].setLayout(null);
            cartoonItem[i].setVisible(false);
            cartoonItem[i].setOpaque(false);
            
            myCartoon.add(cartoonItem[i]);
        }
        
        window.add(myCartoon);
        window.repaint();
    }
    
    
    public void soundConstuctor()
    {
        try
        {
            inAudio = AudioSystem.getAudioInputStream(soundGame);
            clip = AudioSystem.getClip();
            clip.open(inAudio);
            clip.stop();
            
            FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
            gainControl.setValue((float) 1.0);
        } 
        catch (Exception e)
        {
            //...
        }
    }
    
    
    public void makeButton()
    {
        bt.setFont(new Font("Courier New", Font.PLAIN | Font.BOLD, 20));
        bt.setMargin(new Insets(0,0,0,0));
        bt.setBounds(320, 500, 160, 30);
        bt.setText("Start");
        bt.setLayout(null);
        bt.setFocusable(false);
        
        window.add(bt);
        
        ActionListener actionListener = new GoListener();
        bt.addActionListener(actionListener);
    }
    
    
    public class GoListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            soundStart();
            cartoonStart();
        }
    }
    
    
    private void cartoonStart()
    {         
        fpsTimer = new Timer(fps, new fpsListener());
        fpsTimer.start();
    }
    
    
    public class fpsListener implements ActionListener
    {       
        public void actionPerformed(ActionEvent e)
        {  
            timeLine++;
 
            if (timeLine > 0 && timeLine < arrCartoon.length)
            {
                cartoonItem[timeLine - 1].setVisible(false);
                cartoonItem[timeLine].setVisible(true);
            }
 
            if (timeLine == arrCartoon.length)
            {
                cartoonItem[arrCartoon.length - 1].setVisible(false);
                timeLine = 0;
            }
            
            window.repaint();
            System.out.println(timeLine);
        }    
    }
    
    
    public void soundStart()
    {
        bt.setVisible(false);
        
        try
        {
            clip.loop(Clip.LOOP_CONTINUOUSLY);
            clip.setFramePosition(0);
            clip.start();
        } 
        catch (Exception ex)
        {
            //...
        }
    }
    
    
    public static void main(String[] args) 
    {
        new test();
    }
}
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
07.02.2018, 22:41
Цитата Сообщение от Nidl Посмотреть сообщение
простите конечно но что не так с GUI ? на нем прекрасно пишутся скрол-игры с музыкой колизией и программной анимацией. А поделки какую делает Давид вообще пустяк.
Давид не надо вешать музыку на слушатель кнопки, создайте поток заранее а по нажатию кнопки меняйте значение переменной по которой в другом потоке и будете ставить на паузу вашу музыку.
Ты вообще прочитал, что я написал?
0
296 / 149 / 67
Регистрация: 22.02.2017
Сообщений: 592
08.02.2018, 08:47
korvin_, тысяча извинений, я прочел ваш пост и так и не понял вас, у меня вариантов 5 сложилось что вы хотели сказать. Слишком обобщено вы написали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2018, 08:47
Помогаю со студенческими работами здесь

как сделать несколько разных слайд-шоу на странице?
Здравствуйте! Я создал создал страницу, поставил на неё слайд шоу с изображениями из одной папки и хочу поставить теперь рядом другое...

Как сделать несколько одинаковых слайд шоу на странице
Здравствуйте. Воспользовался этим примером слайд шоу. http://jquery.malsup.com/cycle/basic.html Но если сделать несколько блоков &lt;div...

Как сделать всплывающее и затухающее слайд-шоу на флэш?
Доброго времени суток! Есть исходник другого слайдера, но там эффект другой, как сделать так чтобы изображения при нажатии на стрелку...

Как сделать слайд-шоу, где картинки меняются самостоятельно
Как можно сделать чтобы картинки менялись сами каждые 5 секунд https://www.cyberforum.ru/cpp-builder/thread157629.html ?

Как сделать открытие слайд-шоу в модальном окне при клике на ссылке?
На данный момент по ссылке открывается отдельная страница с несколькими картинками. Хочу сделать просмотр этих картинок на этой же...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru