java gui 去掉按钮_为什么我的JAVA GUI程序接受和取消按钮不起作用?

我正在尝试编写一个上传带有歌曲数据库的文件的GUI,并允许用户添加,编辑或删除此数据库中的歌曲。歌曲名称出现在组合框中,当选择歌曲时,相关信息出现在不可编辑的文本字段中。界面上有添加,编辑,删除,接受,取消和退出的按钮。当选择编辑或添加时,文本字段变为可编辑并且启用接受和取消按钮。此功能可以正常工作,但接受和取消按钮不起作用。当选择“接受”时,会添加歌曲或编辑当前歌曲,并将其添加到组合框中,并且接受和取消将被禁用,而其他按钮变为启用状态并且文本字段变为不可编辑。取消应该以同样的方式执行,但不是添加或编辑歌曲,接口只是恢复到原始状态。下面是actionPerformed类的代码:为什么我的JAVA GUI程序接受和取消按钮不起作用?

public void actionPerformed(ActionEvent e) {

Object source = e.getSource();

int index = songBox.getSelectedIndex();

Song selection = songList.get(index);

Song newSong = new Song();

if (source == songBox) {

itemCodeField.setText(selection.getSongCode());

descriptionField.setText(selection.getSongName());

artistField.setText(selection.getSongArtist());

albumField.setText(selection.getSongAlbum());

priceField.setText(selection.getSongPrice());

}

if (source == addButton) {

//Enable and disable appropriate buttons

addButton.setEnabled(false);

editButton.setEnabled(false);

deleteButton.setEnabled(false);

acceptButton.setEnabled(true);

cancelButton.setEnabled(true);

exitButton.setEnabled(false);

//Clear text fields and make editable

itemCodeField.setText("");

itemCodeField.setEditable(true);

descriptionField.setText("");

descriptionField.setEditable(true);

artistField.setText("");

artistField.setEditable(true);

albumField.setText("");

albumField.setEditable(true);

priceField.setText("");

priceField.setEditable(true);

//Set song values

newSong.setSongCode(itemCodeField.getText());

newSong.setSongName(descriptionField.getText());

newSong.setSongArtist(artistField.getText());

newSong.setSongAlbum(albumField.getText());

newSong.setSongPrice(priceField.getText());

}

if (source == editButton) {

//Enable and disable appropriate buttons

addButton.setEnabled(false);

editButton.setEnabled(false);

deleteButton.setEnabled(false);

acceptButton.setEnabled(true);

cancelButton.setEnabled(true);

exitButton.setEnabled(false);

//Make text fields editable

descriptionField.setEditable(true);

artistField.setEditable(true);

albumField.setEditable(true);

priceField.setEditable(true);

}

if (source == deleteButton) {

songBox.removeItemAt(index);

}

if (source == acceptButton)

{

if (source == addButton)

{

//Add new song to array

songBox.addItem(newSong);

//Enable and disable appropriate buttons

addButton.setEnabled(true);

editButton.setEnabled(true);

deleteButton.setEnabled(true);

acceptButton.setEnabled(false);

cancelButton.setEnabled(false);

exitButton.setEnabled(true);

}

if (source == editButton)

{

//Make text fields uneditable

descriptionField.setEditable(false);

artistField.setEditable(false);

albumField.setEditable(false);

priceField.setEditable(false);

//Set new text

selection.setSongName(descriptionField.getText());

selection.setSongArtist(artistField.getText());

selection.setSongAlbum(albumField.getText());

selection.setSongPrice(priceField.getText());

songBox.addItem(selection);

//Enable and disable appropriate buttons

addButton.setEnabled(true);

editButton.setEnabled(true);

deleteButton.setEnabled(true);

acceptButton.setEnabled(false);

cancelButton.setEnabled(false);

exitButton.setEnabled(true);

}

}

if (source == cancelButton)

{

//Enable and disable appropriate buttons

addButton.setEnabled(true);

editButton.setEnabled(true);

deleteButton.setEnabled(true);

acceptButton.setEnabled(false);

cancelButton.setEnabled(false);

exitButton.setEnabled(true);

//Make text fields uneditable

descriptionField.setEditable(false);

artistField.setEditable(false);

albumField.setEditable(false);

priceField.setEditable(false);

}

if (source == exitButton) {

System.exit(0);

}

}

该程序当前正在编译和运行。添加和编辑按钮按照他们的意图进行,但接受和取消按钮不会。选择后,他们什么也不做。文本字段保持可编辑状态,接受和取消按钮保持启用状态,而其他所有按钮保持禁用状态。

更新:取消按钮用于启用或禁用正确的项目,但所做的任何更改不会立即重置,您必须切换组合框。 我现在明白'source'不能同时等于两个按钮输入。但是,接受按钮必须根据用户是否首先选择添加或编辑来做两件事,而我不知道如何处理。

2016-04-28

Jes

+1

你正在测试if(source == addButton)里面的if(source == acceptButton)。那第二个如果可以更新是真的。 –

+0

根据您正在编辑还是添加歌曲,接受操作有所不同。如果不是这样,我将如何区分这两个事件?这也不能解释为什么取消按钮不起作用 –

+0

但你问的是源是否同时等于addButton和cancelButton。这可能会更新发生。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值