少し問題が発生しました。
私の GUI では、中央にテキスト領域があります ( BorderLayout
)。それから私はJList
西にいます。
リストにある曲のタイトルのメンバーをクリックすると、テキスト領域に曲のタイトル、アーティスト、および価格が表示されます。すべて動作していますが、問題は、メンバーをクリックすると、タイトル、アーティスト、および価格が 2 回表示されることです。
「valueChanged()」のコードと関連するコードの一部を次に示します。
public void valueChanged(ListSelectionEvent e)
{
Object source = e.getSource();
int index = songList.getSelectedIndex();
Song selection = songCollection[index];
if(source == songList)
{
textArea.append(selection.getTitle() + " " + selection.getArtist() + " " + selection.getPrice() + "\n" );
}
}
private Song songCollection[] = new Song[5];
private String songTitle[] = new String[5];
//Fill song array
songCollection = getSongs();
songTitle = getSongTitle();
//Methods:
public Song[] getSongs()
{
Song[] array = new Song[5];
array[0] = new Song("Summer", "Mozart", 1.50);
array[1] = new Song("Winter", "Mozart", 1.25);
array[2] = new Song("Spring", "Mozart", 2.00);
array[3] = new Song("Baby", "Justin Bieber", 0.50);
array[4] = new Song("Firework", "Katy Perry", 1.00);
return array;
}
public String[] getSongTitle()
{
String[] names = new String[5];
for(int i = 0; i < 5; i++)
names[i] = songCollection[i].getTitle();
return names;
}
いままたプログラムをいじっていて気づいたことがあります。リスト内のメンバーを押すと、以前と同じように 2 回印刷されます。ただし、マウスを押したままにすると一度印刷され、離すと再度印刷されることに気付きました。そのため、1 つのメンバーでマウスを押し、カーソルを他のメンバーに上下にドラッグすると、それらは 1 回印刷されますが、マウスを離すと、終了したものがもう一度印刷されます。