2

私はJavaが初めてで、コンパイル時にエラーが発生し続けます。特に「シンボルエラーが見つかりません」です。テーブル内の文字列をファイルの宛先として取得しようとしていますが、テーブルを呼び出すことができないため、変数ホルダーを使用してみましたが、再びエラーが発生しました。

それに伴い、ファイルチューザーで開くことができるファイルの種類を変更しようとしましたが、うまくいく解決策が見つかりません。

最後に、欠落しているシンボルとは何かを誰か説明してもらえますか? 何度も修正しようとしてもうまくいかないので、誤解しているように感じるからです。

//C:\\Users\\Andrew\\Downloads\\never gonna give you up.wav
//Andrew Douglas
//Imports
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
import javax.swing.filechooser.*;
import javax.swing.JTable;

//Creates class
public class jPlayer extends JFrame implements ActionListener {

    //Sets up form items and necessary globals
    JButton save, play, stop, loop;
    JFileChooser dialog;

    String Artist, Song, Album, Loc;
    Object[][] data;
    int n = 1;
    String holder;
    //Makes the library, with a 51 song limit.
    jLibrary[] addedSong = new jLibrary[50];

    public jPlayer() {
        //Creates frame
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("jPlayer");
        this.setSize(800, 600);
        //Makes titles for table
        String[] columnNames =  {"Artist",
                                "Song",
                                "Album",
                                "Location"};
        //Gives one value for array
        addedSong[0] = new jLibrary("Rick Astley", "NGGYU", "UnKnown", "C:\\Users\\Andrew\\Downloads\\never gonna give you up.wav");
        //Adds it to table array
        Object[][] data = {
        {
            addedSong[0]
        }

        };
        //Creates table
        final Jtable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        table.setFillsViewportHeight(true);
        //Lets it sort the rows
        table.setAutoCreateRowSorter(true);
        //Creates the scroller
        JScrollPane scrollPane = new JScrollPane(table);
        //Makes the save file dialog and the play and save buttons
        dialog = new JFileChooser();
        play = new JButton ("Play Song");
        save = new JButton ("Save a file");
        //Adds the button listeners
        save.addActionListener(this);
        play.addActionListener(this);
        //Adds buttons to panel
        JPanel buttons = new JPanel();
        buttons.add(save);
        buttons.add(play);
        //Puts the buttons at the bottom
        add(buttons, BorderLayout.SOUTH);
        add(scrollPane);
        this.setVisible(true);
        holder = table.getselectedRows[3];

    }
    //Creates action listener for button
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == save) {
            dialog.setFileFilter(new FileNameExtensionFiler("Wave File (*.wav)"));
            int returnVal = dialog.showSaveDialog(jPlayer.this);
            if (returnVal == dialog.APPROVE_OPTION) {
                File file = dialog.getSelectedFile();
                addToLibrary("", "", "", file.getName());

            }
        }
        else if (e.getSource() == play) {
            try {
            File soundFile = new File(holder);
            System.out.println(soundFile);
            AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
            Clip clip = AudioSystem.getClip();
            clip.open(audioIn);
            clip.start();
            } catch (UnsupportedAudioFileException f) {
         f.printStackTrace();
      } catch (IOException f) {
         f.printStackTrace();
      } catch (LineUnavailableException f) {
         f.printStackTrace();
      }

    } }
    public static void main(String[]args) {
        new jPlayer();
    }
    public void addToLibrary(String art, String song, String alb, String file) {
            addedSong[n] = new jLibrary(art, song, alb, file);
            int j = 0;
            while (n >= 0) {
            Object[][] data = {
            {
                addedSong[(n-j)],
            }
        };
            j = j+1;
        }
            n = n +1;

    }
}

エラー:

--------------------Configuration: <Default>--------------------
C:\Users\Andrew\Documents\ICS4U Final\jPlayer.java:47: error: cannot find symbol
        final Jtable table = new JTable(data, columnNames);
              ^
  symbol:   class Jtable
  location: class jPlayer
C:\Users\Andrew\Documents\ICS4U Final\jPlayer.java:75: error: cannot find symbol
            dialog.setFileFilter(new FileNameExtensionFiler("Wave File (*.wav)"));
                                     ^
  symbol:   class FileNameExtensionFiler
  location: class jPlayer
2 errors

Process completed.

質問ばかりで申し訳ありませんが、よろしくお願いします!

編集: Jtable を JTable に変更し、フィルターに t を追加し、もう必要ないのでホルダーを取り除きました。

コードは次のようになります。

//C:\\Users\\Andrew\\Downloads\\never gonna give you up.wav
//Andrew Douglas
//Imports
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
import javax.swing.filechooser.*;
import javax.swing.JTable;

//Creates class
public class JPlayer extends JFrame implements ActionListener {

    //Sets up form items and necessary globals
    JButton save, play, stop, loop;
    JFileChooser dialog;

    String Artist, Song, Album, Loc;
    Object[][] data;
    int n = 1;
    //Makes the library, with a 51 song limit.
    jLibrary[] addedSong = new jLibrary[50];

    public JPlayer() {
        //Creates frame
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("jPlayer");
        this.setSize(800, 600);
        //Makes titles for table
        String[] columnNames =  {"Artist",
                                "Song",
                                "Album",
                                "Location"};
        //Gives one value for array
        addedSong[0] = new jLibrary("Rick Astley", "NGGYU", "UnKnown", "C:\\Users\\Andrew\\Downloads\\never gonna give you up.wav");
        //Adds it to table array
        Object[][] data = {
        {
            addedSong[0]
        }

        };
        //Creates table
        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        table.setFillsViewportHeight(true);
        //Lets it sort the rows
        table.setAutoCreateRowSorter(true);
        //Creates the scroller
        JScrollPane scrollPane = new JScrollPane(table);
        //Makes the save file dialog and the play and save buttons
        dialog = new JFileChooser();
        play = new JButton ("Play Song");
        save = new JButton ("Save a file");
        //Adds the button listeners
        save.addActionListener(this);
        play.addActionListener(this);
        //Adds buttons to panel
        JPanel buttons = new JPanel();
        buttons.add(save);
        buttons.add(play);
        //Puts the buttons at the bottom
        add(buttons, BorderLayout.SOUTH);
        add(scrollPane);
        this.setVisible(true);

    }
    //Creates action listener for button
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == save) {
            dialog.setFileFilter(new FileNameExtensionFilter("Wave File (*.wav)"));
            int returnVal = dialog.showSaveDialog(JPlayer.this);
            if (returnVal == dialog.APPROVE_OPTION) {
                File file = dialog.getSelectedFile();
                addToLibrary("", "", "", file.getName());

            }
        }
        else if (e.getSource() == play) {
            try {
            File soundFile = new File(table.getSelectedRows[3]);
            System.out.println(soundFile);
            AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
            Clip clip = AudioSystem.getClip();
            clip.open(audioIn);
            clip.start();
            } catch (UnsupportedAudioFileException f) {
         f.printStackTrace();
      } catch (IOException f) {
         f.printStackTrace();
      } catch (LineUnavailableException f) {
         f.printStackTrace();
      }

    } }
    public static void main(String[]args) {
        new jPlayer();
    }
    public void addToLibrary(String art, String song, String alb, String file) {
            addedSong[n] = new jLibrary(art, song, alb, file);
            int j = 0;
            while (n >= 0) {
            Object[][] data = {
            {
                addedSong[(n-j)],
            }
        };
            j = j+1;
        }
            n = n +1;

    }
}

しかし、今、私はこのエラーが発生しています:

--------------------Configuration: <Default>--------------------
C:\Users\Andrew\Documents\ICS4U Final\JPlayer.java:83: error: cannot find symbol
            File soundFile = new File(table.getSelectedRows[3]);
                                      ^
  symbol:   variable table
  location: class JPlayer
1 error

Process completed.

何か助けはありますか?

4

4 に答える 4

6

必要なクラスはJTableではなくJtable

エラーは基本的に、存在しないシンボルを使用していることを意味します。使用しようとしているクラスはpackage javax.swing(インポートした) に存在します: javax.swing.JTable、大きなT

IDE はそれを見つけるのに役立ちますが、初心者にとっては、テキスト エディターから始めてエラーを 1 つずつ確認するのも良いことです ;)

于 2013-06-18T12:19:45.773 に答える
1

クラスは -not と呼ばれFileNameExtensionFilterますFileNameExtensionFiler。(「t」を追加)。

Eclipse や NetBeans などの IDE をダウンロードして使用することをお勧めします。これらは、これらの誤植を回避するのに役立ちます。

于 2013-06-18T12:19:29.900 に答える
0

2 番目の質問への回答です。

メソッド内で定義された変数は、そのメソッド内でのみ使用できることに注意してください。

final JTable table = new JTable(data, columnNames);

コンストラクター内で定義されているため、メソッドpublic JPlayer()では使用できません。テーブルをインスタンスメンバーpublic void actionPerformed(ActionEvent e)として定義する必要があります(つまり、上部*の近くなど)JButton save, play, stop, loop;

*技術的には、インスタンス メンバーが一番上にある必要はありませんが、通常は

于 2013-06-18T12:34:44.900 に答える
0
final JTable table = new JTable(data, columnNames);

ではありませんJtable。この種の問題を回避するには、Eclipse を使用してみてください。

于 2013-06-18T12:22:02.273 に答える