2014-03-25 172 views
1

我是Java新手,所以請耐心等待。 我試圖得到一個按鈕來打開一個名爲AboutFrame的新框架,但每當我按下按鈕什麼都不會發生。ActionListener沒有做任何事情

我第一次實現ActionListener:

class MainFrame extends JFrame implements ActionListener { 

然後我設置按鈕(通常超( 「布拉布拉」)之後; ...)

JButton info = new JButton("About Failsafe"); 
    info.addActionListener(this); 

然後:

public void actionPerformed(ActionEvent event) { 
String command = event.getSource().toString(); 
    if (command == "info") { 
     AboutFrame abt = new AboutFrame(); 
    } 
} 

那麼我在這裏做錯了什麼?我看不到任何錯誤..

+0

添加此... abt.setVisible(True) – Srinath

+0

即使使用等於,您的條件也不會被評估爲真。你嘗試打印什麼'event.getSource()。toString();'返回?只要使用if(info == event.getSource())' –

回答

2

你沒有得到正確的命令文本:

JButton button = (JButton) event.getSource(); 
String command = button.getText(); 

if (command.equals("About Failsafe")) 
{ 
    AboutFrame abt = new AboutFrame(); 
    abt.setVisible(true); 
} 

或者,如果您JButton info;聲明是一個實例變量(而不是本地的),你可以把你的,如果檢查:

if (event.getSource() == info) 
+0

第一個解決方案奏效!非常感謝 :) – TheGie

0

嘗試:

if (event.getSource()==info) {} 

,而不是if (command=="info") {}

+0

'if(command.equals(「info」))'這將如何工作? 「info」是變量名稱,而不是JButton的命令文本。 – splungebob

+0

你說得對。我的錯。對不起。 – zomnombom