在我的主要鞦韆架我有這樣的方法:搖擺的invokeLater()方法不工作
public void receiveCommand(String command) {
if (command.equals("enable")) {
Runnable enable = new Runnable() {
public void run() {
button1.setEnabled(true);
button1.revalidate();
button1.repaint();
}
};
SwingUtilities.invokeLater(enable);
}
基本上,我試圖更新GUI(啓用按鈕Button1的)從外面通過調用receiveCommand()方法。
但是,這不起作用,即button1仍然被禁用。我在這裏做錯了什麼?
編輯: 這裏是按鈕1聲明:
private javax.swing.JButton button1;
button1.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
button1.setEnabled(false);
button1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
button1ActionPerformed(evt);
}
});
兩個按鈕1和receiveCommand方法是在此遊戲類:
public class Game extends javax.swing.JFrame
米ethod從另一個類叫做:
gameUI.receiveCommand("enable"); //gameUI is a Game object
編輯2:感謝您對您的幫助!事實證明這是一個錯誤的參考,所以我所做的只是嘗試更新一個尚未設置可見的錯誤框架的GUI。傻我
「不起作用」告訴我們一點。你能詳細說明嗎?給我們更多的信息繼續下去? –
您確定'if'語句內的代碼塊正在執行嗎?也許嘗試'command.equalsIgnoreCase(「啓用」)'而不是? – MadProgrammer
我忘了添加:button1仍然被禁用 – Chin