2016-04-13 11 views
0

Ich verstehe nicht, warum meine yankee und whiskeyJButton s nicht funktionieren. Gerade jetzt nur ich sie möchte das Programm schließen, wenn romeo größer als 1 ist und sierra größer als 1.JAVA JButton in einer anderen Klasse weigert sich zu aktivieren, wenn gedrückt

import java.awt.*; 
import java.lang.*; 
import javax.swing.*; 
import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.InputEvent; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 
import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 
import java.awt.Image; 
import java.awt.image.BufferedImage; 
import java.io.*; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.imageio.ImageIO; 
import javax.swing.JPanel; 
import java.util.Scanner; 

public class AlphaMenu extends JFrame /*implements actionPerformed*/ 
{ 

    private GraphicsDevice gamma; 
    public JButton charlie, zulu, yankee, xray; 
    public JFrame beta; 
    public JPanel delta, echo, foxtrot, golf, hotel; 
    public JTextArea whiskey, victor; 
    public BorderLayout uniform; 
    public ImageIcon bg; 
    public JLabel tango; 
    public int sierra, romeo; 
    public Integer quebec, papa; 
    public ActionEvent oscar; 
    public ActionEvent november; 

    public AlphaMenu() 
    { 
     //Initialization of Objects 
     charlie = new JButton("EXIT"); 
     zulu = new JButton("Enter Time"); 
     yankee = new JButton("Enter Amount of Money"); 
     xray = new JButton("Calculate"); 
     sierra = 0; 
     romeo = 0; 
     quebec = new Integer(0); 
     papa = new Integer(0); 
     whiskey = new JTextArea(2, 15); 
     victor = new JTextArea(2, 15); 
     bg = new ImageIcon("background.gif"); 
     beta = new JFrame(); 
     delta = new JPanel(); 
     echo = new JPanel(); 
     foxtrot = new JPanel(); 
     golf = new JPanel(); 
     hotel = new JPanel(); 
     uniform = new BorderLayout(); 
     ImageIcon bg = new ImageIcon("background.gif"); 
     tango = new JLabel(""); 

     tango.setIcon(bg); 

     //Modification of panels 
     beta.add(delta, uniform.PAGE_END); 
     beta.add(golf, uniform.PAGE_START); 
     beta.add(echo, uniform.LINE_START); 
     beta.add(foxtrot, uniform.LINE_END); 
     beta.add(hotel, uniform.CENTER); 

     golf.add(tango); 

     //Modification of JButton charlie & adding of JButtons 
     charlie.setPreferredSize(new Dimension(100, 50)); 
     delta.add(charlie); 
     charlie.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       System.exit(0); 
      } 
     }); 
     echo.add(whiskey); 
     echo.add(yankee); 
     foxtrot.add(victor); 
     foxtrot.add(zulu); 


     //Modification of JFrame beta 
     beta.setUndecorated(true); 
     beta.setExtendedState(JFrame.MAXIMIZED_BOTH); 
     beta.setResizable(false); 
     beta.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     beta.setVisible(true); 
    } 

    public void buttonSetup() throws NumberFormatException 
    { 
     //Modification of JButton yankee & JTextArea whiskey & int sierra 
     romeo = quebec.parseInt(whiskey.getText()); 
     yankee.setPreferredSize(new Dimension(300, 50)); 
     yankee.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent oscar) 
      { 
       System.exit(0); 
      } 
     }); 

     //Modification of JButton zulu & JTextArea victor & int romeo 
     sierra = papa.parseInt(victor.getText()); 
     zulu.setPreferredSize(new Dimension(300, 50)); 
     zulu.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent november) 
      { 
       System.exit(0); 
      } 
     }); 

    } 

    public void actionPerformed(ActionEvent e) 
    { 
    } 

    public static void main(String[] args) 
    { 
     new AlphaMenu(); 
    } 
} 
+2

Willkommen bei Stack Overflow. Bitte ziehen Sie Ihren Code ein - wenn Sie nur Ihre IDE formatieren, sollte sie einen guten Job machen. Das wird es uns (und Ihnen) viel leichter machen, es zu verstehen. Ich vermute auch, dass Sie die Menge an Code signifikant reduzieren und das Problem immer noch demonstrieren können - siehe [mcve]. –

+0

Randnotiz: Auch Anfänger können nicht-schlampigen Code schreiben. Eigentlich macht das dein Leben, unsere "Arbeit"; und die von deinem Lehrer viel einfacher. Code ist geschrieben ... zu lesen; So können Sie sich besser darauf konzentrieren, den Lesevorgang so einfach wie möglich zu gestalten. Oder denkst du, dass ein Mechaniker, der seinen Job lernt, seine Garage in ein Chaos verwandeln kann? – GhostCat

+4

Ich würde auch dringend empfehlen, Ihre Variablen nach ihrem Zweck zu benennen, anstatt nur durch das Alphabet zu gehen ... –

Antwort

0

Also, Sie haben zwei JTextArea (JTextField wäre wahrscheinlich besser) und einen Knopf. Sie möchten, dass einige Schaltflächen den Exit ausführen, wenn der Text beider Textfelder eine Ganzzahl größer als 1 ist.

scheint, dass Ihre buttonSetup()-Funktion nirgends aufgerufen wird.

Wie auch immer, ich würde einen ActionListener erstellen, der die Texte liest, in Ganzzahl konvertiert, Ihre Bedingung testet und exit() ausführt. die Variablennamen Sie verwenden sind wirklich schlecht: Das Action sollten Sie die Aktion

final ActionListener al = new ActionListener() { 
    public void actionPerformed(ActionEvent event) { 
     try { 
      final int intRomeo = Integer.parseInt(romeo.getText()); 
      final int intSierra = Integer.parseInt(sierra .getText()); 

      if (intRomeo > 1 && intSierra > 1) { 
       // whatever you want to do 
       System.exit(0); 
      } 
     } catch (/*NumberFormat*/ Exception e) { 
      // ...not integers 
     } 
    }; 
} 
whiskey.addActionListener(al); 
yankee.addActionListener(al); 

Ich muss hinzufügen, ausführen möchten allen Tasten hinzugefügt werden. Überlege, etwas Bedeutsameres zu wählen.

+1

Vielen Dank!Ich habe den Code neu geschrieben, indem ich dies als eine Art Richtlinie verwende. Verwendete auch genauere Variablennamen. Große Antwort! – Fuzzihead

0

Für den Anfang, Lesbarkeit ... würde es wahrscheinlich die "Schlamperei" helfen, wenn Sie passendere Namen für Ihre Variablen verwendet, verschiedene Abschnitte des Codes eingerückt und Kommentare verwendet, um Abschnitte in Laien zu beschreiben. Vielleicht würden "btnExit" und "btnCalculate" dazu beitragen, die Navigation etwas einfacher zu machen.

Vorwärts, Sie haben auch nicht zwei verschiedene Klassen hier, Sie haben eine Klasse mit mehreren Methoden. Was gut ist, wollte Sie aber darüber informieren. Ich denke, vielleicht müssen Sie die Schaltflächen zu ihren Panels nach Ihren Aktion Listenern und Formatierung für jede Schaltfläche hinzufügen. Ich komme gerade selbst in Swing-Sachen und habe bemerkt, dass das Verschieben der .add() - Funktionen im Code geholfen hat, wenn ich auf solche Probleme stoße. Versuchen Sie Folgendes. Ich habe eingerückt und neue Namenskonventionen für die Kommentare verwendet, aber der Code verwendet Ihre Konvention.

//add the pnlEcho to frmBeta 
beta.add(echo, uniform.LINE_START); 

//format btnYankee 
yankee.setPreferredSize(new Dimension(300, 50)); 

//btnYankee action listener 
yankee.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { //default action event 
     System.exit(0); //you could use this 
     beta.dispose(); //or you could dispose the frame and 
         //do more work after it is gone 
    } 
}); 

//add btnYankee to pnlEcho 
echo.add(yankee); 
+0

Ja, ich habe den Code komplett umgeschrieben und es ist jetzt fünfzehn mal sauberer. Funktioniert wie ein Champion. Vielen Dank! – Fuzzihead

0

ich versagt, warum Art meine yankee und Whisky zu verstehen JButtons sind nicht Arbeits

Die Variable wiskey ist nicht JButton Typ, aber JTextArea.

+0

Ja mein Fehler haha. Jetzt sowieso behoben. – Fuzzihead