編輯:從來沒有想過我說的一切!(Java Swing GUI)如何使方法等待來自按鈕的輸入?
我剛剛意識到沒有必要使用循環。設置GUI的每種方法在完成後立即結束,並且整個程序「等待」我以後再按下一個按鈕。我只需要設置方法,如果有必要,他們可以「循環」。
我不確定我是否正確解釋,但我認爲它會起作用。無論如何感謝您的幫助!要保證安全:當我在「main()」方法中設置主窗口時,如果程序遇到了我設置的特定條件(即玩家死),並不會自行「結束」?
好了,這裏是我的問題:
我的工作是使用Swing作爲圖形用戶界面非常原始的RPG。因爲這意味着我需要大量的方法來使它工作,並且我需要用少量的按鈕來控制每一件事(爲了簡單起見),我決定只使用一定數量的按鈕,並創建幾個不同的ActionListeners 。當調用某個方法時,它通過將必要數量的按鈕設置爲「可見」,設置它們的文本以及爲它們分配正確的ActionListeners來設置GUI。
下面是一個例子(玩家戰鬥的NPC):
public int Combat(NPC e){
game.setButtons(0, true, "Attack", 1);
game.setButtons(1, true, "Ability", 1);
game.setButtons(2, false, "", 1);
game.setButtons(3, false, "", 1);
game.setButtons(4, false, "", 1);
game.setButtons(5, true, "Flee", 5);
while(e.gethp() > 0 && this.hp > 0){
if (!game.getProceed())
break;
}
if (e.gethp() <= 0)
return 1;
else if(hp <= 0)
return 2;
else return 3;
}
( 「setButtons」 :)
public void setButtons(int b, boolean v, String s, int act){
button[b].setVisible(v);
button[b].setText(s);
switch(act){
case 1: button[b].addActionListener(comlist[b]); break;
case 2: button[b].addActionListener(maplist[b]); break;
case 3: button[b].addActionListener(loclist[b]); break;
case 4: button[b].addActionListener(invlist[b]); break;
case 5: button[b].addActionListener(mainlist[b]); break;
case 6: button[b].addActionListener(playlist[b]); break;
case 7: button[b].addActionListener(intlist[b]); break;
case 8: button[b].addActionListener(proc); break;
}
}
(以下簡稱 「CombatListener」 :)
class CombatListener implements ActionListener{
int but_num;
public CombatListener(int n){
but_num = n;
}
@Override
public void actionPerformed(ActionEvent arg0) {
player.CombatAction(but_num);
}
}
(我設置的另一個監聽器是「繼續」監聽器,它將遊戲中的布爾型「proceed」變量設置爲false。這裏的想法是成爲我的「後退」按鈕,這將允許我從菜單返回到前一個菜單,或者在這種情況下:退出戰鬥。這就是爲什麼我在while循環中設置它的原因,但我不確定這是否是正確的方式。)
我不知道我應該提供多少代碼來使它成爲任何一種感覺(整個事情是非常巨大的)。如有必要,我會在這裏發佈所有內容。
我的問題:我如何確保當我的程序進入「Combat」方法時,在使用按鈕給出命令時,它將能夠留在那裏?這裏的複雜之處在於,這些按鈕通常會讓程序輸入一個額外的方法,也可能以不同的方式設置GUI,並且當這些方法完成時,需要「重置」GUI以使用先前的方法。
我希望這一切有意義... :)
對不起,我不明白是什麼問題。你需要更清楚的問題。 – cworner1
@trashgod它不會讓我刪除它... – user1856971
我的錯誤;看到這個[回答](http://meta.stackexchange.com/a/5222/163188)。 – trashgod