2014-07-20 59 views
-2

所以我創建一個圖形用戶界面,執行添加,子,乘法和除法,但我需要組件,構造函數,過程&顯示應該在子類中我的問題是我無法獲得我的答案按鈕工作。actionperformed在主類

子類:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
public class basic_arithmetic extends JFrame{ 

public JPanel panel1, panel2; 
public JRadioButton sum, dif, pro, quo; 
public JTextField n1, n2; 
public JButton answer, clear; 
public ButtonGroup button; 
public comBHandler cbHandler; 
public exBHandler ebHandler; 
public static final int WID=400; 
public static final int HGT=125; 
public basic_arithmetic(){ 


    answer = new JButton("Answer"); 
    cbHandler = new comBHandler(); 
    answer.addActionListener(cbHandler); 


    clear = new JButton("Clear"); 
    ebHandler = new exBHandler(); 
    clear.addActionListener(ebHandler); 

    public class comBHandler implements ActionListener{ 
public void actionPerformed(ActionEvent event){ 
    } 
} 
public class exBHandler implements ActionListener{ 
    public exBHandler() { 
    } 
    public void actionPerformed(ActionEvent event){ 
     n1.setText(null); 
     n2.setText(null); 
    } 
    public void setButtonActionListener(ActionListener al) { 
     answer.addActionListener(al); 
    } 
} 
} 

主類:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
public class basic_arithmetic_caller{ 
public static void main(String[] args){ 
basic_arithmetic new = new basic_arithmetic(); 


    //if statement for answer button here 
    } 
} 
+1

*「..無法讓我的答案按鈕正常工作」中看到更多關於事件處理/處理程序的信息。*可能它正在進行罷工。 「工作」是什麼意思? –

+1

沒有在ActionListener中爲答覆按鈕實現。 ''comBHandler'具有空的'actionPerformed()'方法。 – Braj

+0

我需要我的答案按鈕才能顯示答案(請參閱主類) – user3857974

回答

1

你完全失蹤的事件處理的想法。您在主要方法中擁有的所有代碼在運行程序時都是正確的。所以你的​​都不會等同於真,因爲還沒有選擇任何東西。

在事件處理的上下文中,當用戶/組件執行某些操作時,例如如果按下按鈕,則會觸發一個ActionEvent。組件需要註冊的偵聽器來偵聽這些事件。當even被觸發時,感興趣的監聽器捕獲事件並處理回調。

例如,你有一個按鈕

JButton button = new JButton("Button"); 

每一次,當按下putton,它會激發ActionEvent。爲了能夠「捕獲」該事件,您需要一個偵聽器,該偵聽器有一個actionPeformed,該事件被觸發時會被調用。

public MyListener extends ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("Button pressed"); 
    } 
} 

現在您只需要將偵聽器註冊到按鈕。當按下按鈕時,一系列調用將導致actionPerformed被調用。

button.addActionListener(new MyListener()); 

現在所有的說法,你需要用你的單選按鈕做同樣的事情。你需要爲它添加一個監聽器,所以它會執行你在主方法中的代碼,當它被按下時。請致電How to Use Buttons, Check Boxes, and Radio Buttons。這三個在AbstractButton家族中,所以它們具有相似的功能。

您還會注意到,不同的組件可以添加不同的偵聽器,因爲它們激發不同的事件。您可以在Writing Event Listeners

+1

下面的編輯鏈接看到完整的修訂歷史記錄,在我看到您的答案之前,我終於明白了您的答案,但是無論如何感謝:D – user3857974