2014-07-20 6 views
-2

Donc je crée une interface graphique qui effectue ajouter, sous, multiplier et diviser mais j'ai besoin d'avoir des composants, constructeur, processus & L'affichage devrait être dans la classe secondaire mon problème est que je ne peux pas obtenir mon bouton de réponse fonctionne.actionperformed sur la classe principale

sous classe:

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); 
    } 
} 
} 

classe principale:

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

* ".. Je n'arrive pas à faire fonctionner mon bouton de réponse" * Peut-être est-il en grève. Que voulez-vous dire par «travailler»? –

+1

Rien n'est implémenté dans ActionListener pour le bouton de réponse. '' comBHandler' a une méthode 'actionPerformed()' vide. – Braj

+0

J'ai besoin de mon bouton Répondre pour voir la réponse (voir la classe principale) – user3857974

Répondre

1

Vous n'y êtes pas l'idée de la gestion des événements. Tout le code que vous avez dans la méthode principale, est le processus juste lorsque vous exécutez le programme. Donc, aucun de vos isSelected() équivaudra à vrai, car rien n'a encore été sélectionné.

Dans le contexte de la gestion des événements, lorsqu'un utilisateur/ou un composant fait quelque chose, lorsque l'événement est déclenché/Par exemple, si vous appuyez sur un bouton, un ActionEvent est déclenché. Un composant a besoin d'un écouteur enregistré pour écouter ces événements. Lorsque le pair est déclenché, l'écouteur intéressé intercepte l'événement et traite le rappel.

Par exemple, vous avez un bouton

JButton button = new JButton("Button"); 

Chaque fois, le Putton est pressé, il déclenche un ActionEvent. Pour être en mesure de "attraper" cet événement, vous avez besoin d'un écouteur, qui a un actionPeformed qui est appelé lorsque l'événement est déclenché.

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

Maintenant vous avez juste besoin d'enregistrer l'écouteur sur le bouton. Lorsque vous appuyez sur le bouton, une série d'appels entraîne l'appel du actionPerformed. Maintenant, tout cela étant dit, vous devez faire exactement la même chose avec vos boutons radio. Vous avez besoin d'ajouter un écouteur, donc il va exécuter ce code que vous avez dans votre méthode principale, quand il l'a appuyé.

Veuillez voir plus au How to Use Buttons, Check Boxes, and Radio Buttons. Ces trois sont dans la famille AbstractButton, donc ils ont des fonctionnalités similaires.

Vous remarquerez également que différents composants ont différents écouteurs que vous pouvez ajouter, car ils déclenchent différents événements. Vous pouvez en savoir plus sur la gestion des événements/handlers au Writing Event Listeners

+1

merci avant que j'ai vu votre réponse, je l'ai finalement eu, mais merci quand même: D – user3857974

Questions connexes