我遇到了一个小问题。
在我的 GUI 中,我在中心有一个文本区域 ( BorderLayout
)。然后我有一个JList
关于西方的。
当我单击列表中的歌曲名称成员时,文本区域应显示歌曲的名称、艺术家和价格。我一切正常,但问题是当我点击一个成员时,标题、艺术家和价格会显示两次。
这是“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;
}
刚才在我再次摆弄我的程序时,我注意到了一些东西。当我按下列表中的成员时,它仍然像以前一样打印两次。但是,我注意到当我按住鼠标时它会打印一次,当我放开它时它会再次打印。因此,如果我在 1 个成员上按下鼠标,并将光标向上/向下拖动到其他成员,它们会打印一次,但是当我放开鼠标时,它会再打印一次我结束的那个。