Я пытаюсь получить кнопку для воспроизведения звука при нажатии в соответствии со значением. Это то, что я получил до сих пор, но это не работает. Я следовал этому уроку: https://www.youtube.com/watch?v=3q4f6I5zi2w&list=PLrqwM2iFaguigFGMfG4f4H516zVByp97N, но я не думаю, что это проблема для Swing.
import javax.swing.ImageIcon;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.swing.JOptionPane;
import sun.audio.*;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author 25555
*/
public class javaOrchestraGui extends javax.swing.JFrame {
/**
* Creates new form javaOrchestraGui
*/
public javaOrchestraGui() {
initComponents();
//Trombone trombone = new Trombone();//creating trombone object
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
area_selection_info_panel = new javax.swing.JPanel();
comboBrass = new javax.swing.JComboBox<>();
comboWoodwind = new javax.swing.JComboBox<>();
panelInfo = new javax.swing.JPanel();
paneInfo = new javax.swing.JScrollPane();
textInfo = new javax.swing.JTextArea();
panelImageInter = new javax.swing.JPanel();
labelBrass = new javax.swing.JLabel();
labelString = new javax.swing.JLabel();
labelWoodwind = new javax.swing.JLabel();
labelImage = new javax.swing.JLabel();
butSound = new javax.swing.JButton();
labelTitle = new javax.swing.JLabel();
jButton1.setText("jButton1");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(204, 204, 255));
comboBrass.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Trumpet", "Trombone" }));
comboBrass.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboBrassActionPerformed(evt);
}
});
comboWoodwind.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Alto Saxaphone", "Clarinet" }));
comboWoodwind.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboWoodwindActionPerformed(evt);
}
});
textInfo.setColumns(20);
textInfo.setLineWrap(true);
textInfo.setRows(5);
paneInfo.setViewportView(textInfo);
javax.swing.GroupLayout panelImageInterLayout = new javax.swing.GroupLayout(panelImageInter);
panelImageInter.setLayout(panelImageInterLayout);
panelImageInterLayout.setHorizontalGroup(
panelImageInterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 241, Short.MAX_VALUE)
);
panelImageInterLayout.setVerticalGroup(
panelImageInterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 274, Short.MAX_VALUE)
);
javax.swing.GroupLayout panelInfoLayout = new javax.swing.GroupLayout(panelInfo);
panelInfo.setLayout(panelInfoLayout);
panelInfoLayout.setHorizontalGroup(
panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelInfoLayout.createSequentialGroup()
.addContainerGap()
.addComponent(paneInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 414, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(521, 521, 521)
.addComponent(panelImageInter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelInfoLayout.setVerticalGroup(
panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelInfoLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelImageInter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(paneInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
labelBrass.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
labelBrass.setText("Brass");
labelString.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
labelString.setText("String");
labelWoodwind.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
labelWoodwind.setText("Woodwind");
labelImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/trumpet.jpg"))); // NOI18N
butSound.setText("play sound");
javax.swing.GroupLayout area_selection_info_panelLayout = new javax.swing.GroupLayout(area_selection_info_panel);
area_selection_info_panel.setLayout(area_selection_info_panelLayout);
area_selection_info_panelLayout.setHorizontalGroup(
area_selection_info_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(area_selection_info_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(comboWoodwind, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addGroup(area_selection_info_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(comboBrass, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addGap(35, 35, 35)
.addComponent(labelBrass))
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(labelWoodwind))
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addGap(31, 31, 31)
.addComponent(labelString)))
.addGap(0, 0, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 438, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(area_selection_info_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(labelImage, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(butSound))
.addContainerGap())
);
area_selection_info_panelLayout.setVerticalGroup(
area_selection_info_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addGroup(area_selection_info_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addComponent(labelBrass)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comboBrass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(42, 42, 42)
.addComponent(labelString)
.addGap(59, 59, 59)
.addComponent(labelWoodwind)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comboWoodwind, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addComponent(labelImage, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(butSound))
.addGroup(area_selection_info_panelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(panelInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 203, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(33, Short.MAX_VALUE))
);
labelTitle.setForeground(new java.awt.Color(153, 0, 153));
labelTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
labelTitle.setText("The Orchestra Info Informater");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(labelTitle, javax.swing.GroupLayout.PREFERRED_SIZE, 356, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(239, 239, 239))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(area_selection_info_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(16, Short.MAX_VALUE)
.addComponent(labelTitle, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(area_selection_info_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>
public static void playMusic(String filepath)
{
InputStream music;
try
{
music = new FileInputStream(new File(filepath));
AudioStream audios= new AudioStream(music);
AudioPlayer.player.start(audios);
}
catch(Exception E)
{
JOptionPane.showMessageDialog(null, "Error");
}
}
private void comboBrassActionPerformed(java.awt.event.ActionEvent evt) {
int instrumentChoice;
Trombone trombone = new Trombone();
Trumpet trumpet = new Trumpet();
instrumentChoice = comboBrass.getSelectedIndex();
System.out.println(instrumentChoice);
switch (instrumentChoice){
case 0:
textInfo.setText("Trumpet");
textInfo.setText(trumpet.newInfo());
labelImage.setIcon(new ImageIcon(getClass().getResource("/trumpet.jpg")));
playMusic("D:\\myOrchestraGUI_FH\\Music\\trumpet.wav");
break;
case 1:
textInfo.setText("Trombone");
textInfo.setText(trombone.newInfo());
labelImage.setIcon(new ImageIcon(getClass().getResource("/trombone.png")));
break;
}
}
private void butSound(java.awt.event.ActionEvent evt) {
int instrumentChoice;
instrumentChoice = comboBrass.getSelectedIndex();
switch (instrumentChoice){
case 0:
playMusic("D:\\myOrchestraGUI_FH\\Music\\trumpet.wav");
break;
case 1:
break;
}
}
private void comboWoodwindActionPerformed(java.awt.event.ActionEvent evt) {
Clarinet clarinet = new Clarinet();
AltoSax altosax = new AltoSax();
int instrumentChoice;
instrumentChoice = comboWoodwind.getSelectedIndex();
switch (instrumentChoice){
case 0:
textInfo.setText("Alto Saxaphone");
textInfo.setText(altosax.newInfo());
labelImage.setIcon(new ImageIcon(getClass().getResource("/altosax.jpg")));
break;
case 1:
textInfo.setText("Clarinet");
textInfo.setText(clarinet.newInfo());
labelImage.setIcon(new ImageIcon(getClass().getResource("/clarinet.jpg")));
break;// TODO add your handling code here:
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(javaOrchestraGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(javaOrchestraGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(javaOrchestraGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(javaOrchestraGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new javaOrchestraGui().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel area_selection_info_panel;
private javax.swing.JButton butSound;
private javax.swing.JComboBox<String> comboBrass;
private javax.swing.JComboBox<String> comboWoodwind;
private javax.swing.JButton jButton1;
private javax.swing.JLabel labelBrass;
private javax.swing.JLabel labelImage;
private javax.swing.JLabel labelString;
private javax.swing.JLabel labelTitle;
private javax.swing.JLabel labelWoodwind;
private javax.swing.JScrollPane paneInfo;
private javax.swing.JPanel panelImageInter;
private javax.swing.JPanel panelInfo;
private javax.swing.JTextArea textInfo;
// End of variables declaration
}
Если это поможет, вот полный проект по ссылке на диске Google: https://drive.google.com/file/d/1Czwhmw1X4oQh2dH39mbRv7d-a0Xc1DFZ/view?usp=sharing
извините за проблемы с форматированием, так как это мой первый пост.