私はJavaが初めてで、スタックオーバーフローも初めてです。
JMF API を利用して、Java でコーディングされた単純なメディア プレーヤーを作成しようとしています。これまでのところ、JComboBox
呼び出されplayListHolder
た . ユーザーがメニュー バーから [開く] を選択すると、追加したい曲を から選択しますJFileChooser
。次に、メソッドをplayListHolder
使用して曲ファイルが追加されます。addItem()
でアイテムが選択されplayListHolder
、ユーザーがplay
ボタンをクリックすると、File オブジェクト ファイルが を使用して再生されるアイテムに割り当てられますplayListHolder.getSelectedItem()
。以下のコードのセクションと関連する変数:
File file;
Player p;
Component cont;
Container c;
Component visual;
JButton play = new JButton("Play");
play.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
file = (File) playListHolder.getSelectedItem();
startplay();
}
});
public void openFile() {
JFileChooser filech = new JFileChooser();
int result = filech.showOpenDialog(this);
if (result == JFileChooser.CANCEL_OPTION) {
file = null;
} else {
file = filech.getSelectedFile();
playListHolder.addItem(file);
;
}
}
public void startplay() {
if (file == null)
return;
removepreviousplayer();
try {
p = Manager.createPlayer(file.toURI().toURL());
p.addControllerListener(new ControllerListener() {
public void controllerUpdate(ControllerEvent ce) {
if (ce instanceof RealizeCompleteEvent) {
c = getContentPane();
cont = p.getControlPanelComponent();
visual = p.getVisualComponent();
if (visual != null)
c.add(visual, BorderLayout.CENTER);
if (cont != null)
c.add(cont, BorderLayout.SOUTH);
c.doLayout();
}
}
});
p.start();
}
catch (Exception e) {
JOptionPane.showMessageDialog(this, "Invalid file or location",
"Error loading file", JOptionPane.ERROR_MESSAGE);
}
}
私がやりたいのは、で設定したJComboBox
パス全体ではなく、ファイル名だけで曲ファイルを に表示させることです。file.toString()
JComboBox
今までfile.getName()
箱に を入れただけだったのですが、すぐに自分の甘さに気づきました。これを行うString
と、ボックスにファイル名のplay
.
また、メソッドを使用してファイル名だけを返すメソッドを持つFileWrapper
クラスを作成してから、ファイル オブジェクトの代わりにそれをボックスに直接追加しようとしました。同じ結果が得られました。toString()
file.getName()
FileWrapper
このつまずきを作っているのは私のアマチュアレベルの知識に過ぎないことは確かです。これを行う簡単な方法が必要ですが、信じようと信じまいと、私はそれを見つけることができなかったようです。私が簡単に理解した方法。どんな助けでも大歓迎です。