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

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

31.01.2018, 21:54. Показов 2024. Ответов 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_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
31.01.2018, 22:57
Цитата Сообщение от david karnezis Посмотреть сообщение
на деле же получилось так, что при запуске аудио, мульт останавливается и продолжаться лишь по его окончанию.
А вот не надо такие вещи в GUI-потоке делать.
0
0 / 0 / 0
Регистрация: 19.12.2016
Сообщений: 8
02.02.2018, 00:05  [ТС]
А как нужно сделать чтобы работало нужным образом? Если знаете объясните пожалуйста 😊 Очень прошу)
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
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_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru