Taschenrechnerereignisse einfügen

Detlef7able

Aktives Mitglied
Guten Tag,

ich versuche gerade einen Taschenrechner zu erstellen. Die Oberfläche hab ich schon.
Habe gerade bei jemandem gesehen das die JButtons aufgeteilt wurden Button1,2,3 usw..

Wie kann ich bei mir die Buttons sozusagen vereinzeln?
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

class CalcPanel
{
  static void addComponent( Container cont,
                            GridBagLayout gbl,
                            Component c,
                            int x, int y,
                            int width, int height,
                            double weightx, double weighty )
  {
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.BOTH;
    gbc.gridx = x; gbc.gridy = y;
    gbc.gridwidth = width; gbc.gridheight = height;
    gbc.weightx = weightx; gbc.weighty = weighty;
    gbl.setConstraints( c, gbc );
    cont.add( c );
  }

  public static void main( String[] args )
  {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    Container c = f.getContentPane();

    GridBagLayout gbl = new GridBagLayout();
    c.setLayout( gbl );

    //                                      x  y  w  h  wx   wy

    addComponent( c, gbl, new JTextField(), 0, 0, 4, 1, 1.0, 1.0);
    addComponent( c, gbl, new JButton("C"), 0, 1, 2, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("←"), 2, 1, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("÷"), 3, 1, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("7"), 0, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("4"), 0, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("1"), 0, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("+/-"), 0, 6, 1, 1, 0, 0 );
    addComponent( c, gbl, new JButton("8"), 1, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("5"), 1, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("2"), 1, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("0"), 1, 6, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("9"), 2, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("6"), 2, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("3"), 2, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton(","), 2, 6, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("×"), 3, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("-"), 3, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("+"), 3, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("="), 3, 6, 1, 1, 0  , 0 );

    f.setSize( 250, 250);
    f.setVisible( true );
  }
}

Vielen Dank im Voraus
 

Java20134

Bekanntes Mitglied
Was meinst du mit vereinzeln? Du erzeugst doch immer wieder ein neues Objekt bspw. von JButton mit entsprechendem Text. Und da hast du doch deine "Vereinzelung".
 

Java20134

Bekanntes Mitglied
Naja dann erstelle doch einfach ein Array oder eine Liste:
Java:
JButton[] numbers;  // 0-9
JButton sum, sub, div, mult;
JButton erg;
//...
erg = new JButton("=");
//...
addComponent(c, gbl, erg, 3, 6, 1, 1, 0 , 0);
 

Detlef7able

Aktives Mitglied
Entschuldigung mir ist nicht klar wie das bei den Zahlen ist. Muss man das für jede Zahl separat abspeichern oder werden die Zahlen zu numbers zusammengefasst?
 

Detlef7able

Aktives Mitglied
okay unten bei addComponent muss ich doch dann sowas schreiben oder?
Java:
addComponent( c, gbl, numbers[0], 1, 6, 1, 1, 0  , 0 );

Dann ist doch die 0 aber nicht erreichbar. Wenn ich das so wie Java20134 beschrieben hat, machen würde.
 

Joose

Top Contributor
dann ist doch die 0 aber nicht erreichbar. Wenn ich das so wie Java20134 beschrieben hat, machen würde.
Dann musst du den Code halt etwas anpassen, damit die die 0 auch bekommst ;)
100%ig passenden Code für Copy&Paste wird man selten bekommen, meistens dient der Code nur als Veranschaulichung und muss dann natürlich selbstständig in den eigenen Code eingearbeitet werden ;)
 

Detlef7able

Aktives Mitglied
Ich bin verwirrt, ich habe meine Sachen in der main-Methode und alle anderen Beispiele die ich bisher gesehen habe, da sind die Buttons in den Klassen nicht in der main.

Bin nun auf eine Lösung gestoßen:
Java:
ActionListener al =new ActionListener(){
        public void actionPerformed(ActionEvent e){
            ..........
        }
    };
   
    erg.addActionListener(al);

Wie kann man in das Textfeld schreiben auf Knopfdruck?
 
Zuletzt bearbeitet:

Detlef7able

Aktives Mitglied
Guten Morgen,

ich kann nun per Knopfdruck in das Textfeld schreiben.
Doch wie kann man jetzt den Rechner rechnen lassen kann.

Bin für jede Idee dankbar.

Der Quelltext ist folgender:
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;

import javax.swing.*;

public class CalcPanel
{



static void addComponent( Container cont,
                            GridBagLayout gbl,
                            Component c,
                            int x, int y,
                            int width, int height,
                            double weightx, double weighty )
  {
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.BOTH;
    gbc.gridx = x; gbc.gridy = y;
    gbc.gridwidth = width; gbc.gridheight = height;
    gbc.weightx = weightx; gbc.weighty = weighty;
    gbl.setConstraints( c, gbc );
    cont.add( c );
 
  }
  public static void main( String[] args )
  {
    
  
    JFrame f = new JFrame();
    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    Container c = f.getContentPane();

    GridBagLayout gbl = new GridBagLayout();
    c.setLayout( gbl );
  
  
    JTextField field;
    field = new JTextField();
  
    JButton[] numbers = new JButton[10];
    for(int i = 0; i < numbers.length; i++){
    numbers[i] = new JButton(Integer.toString(i));
    }
  
    JButton sum, sub, div, mult;
    sum = new JButton("+");
    sub = new JButton("-");
    div = new JButton("*");
    mult = new JButton("/");
  
    JButton C;
    C=new JButton("C");
  
    JButton erg;
    erg = new JButton("=");
  
  
    ActionListener al =new ActionListener(){
        public void actionPerformed(ActionEvent e){
 
             String text = ((JButton)e.getSource()).getText();
             field.setText(field.getText()+text);
             int foo = Integer.parseInt(field.getText());
             System.out.println(foo);
             foo = foo+1;
             System.out.println(foo);
             String s = String.valueOf(foo);
             erg.setText(s);
         }
      
    };
    ActionListener al2=new ActionListener(){
        public void actionPerformed(ActionEvent f){
            field.setText("");
        }
    };
    ActionListener al3=new ActionListener(){
        public void actionPerformed(ActionEvent g) {
            String text2 = ((JButton)g.getSource()).getText();
            field.setText(text2);
             if(g.getSource() == sum){
                 field.setText("+");
             }
             else if(g.getSource() == sub){
                 field.setText("-");
             }
             else if (g.getSource() == mult){
                 field.setText("*");
             }
             else if (g.getSource() == div){
                 field.setText("/");
             }
        }
    };
  
  
    numbers[0].addActionListener(al);
    numbers[1].addActionListener(al);
    numbers[2].addActionListener(al);
    numbers[3].addActionListener(al);
    numbers[4].addActionListener(al);
    numbers[5].addActionListener(al);
    numbers[6].addActionListener(al);
    numbers[7].addActionListener(al);
    numbers[8].addActionListener(al);
    numbers[9].addActionListener(al);
    C.addActionListener(al2);
    sum.addActionListener(al3);
    sub.addActionListener(al3);
    mult.addActionListener(al3);
    div.addActionListener(al3);

    //                                      x  y  w  h  wx   wy

    addComponent( c, gbl, field, 0, 0, 4, 1, 1.0, 1.0);
    addComponent( c, gbl, C, 0, 1, 2, 1, 0 , 0 );
    addComponent( c, gbl, new JButton("←"), 2, 1, 1, 1, 0  , 0 );
    addComponent( c, gbl, div , 3, 1, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[7], 0, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[4], 0, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[1], 0, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton("+/-"), 0, 6, 1, 1, 0, 0 );
    addComponent( c, gbl, numbers[8], 1, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[5], 1, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[2], 1, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[0], 1, 6, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[9], 2, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[6], 2, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, numbers[3], 2, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, new JButton(","), 2, 6, 1, 1, 0  , 0 );
    addComponent( c, gbl, mult, 3, 3, 1, 1, 0  , 0 );
    addComponent( c, gbl, sub, 3, 4, 1, 1, 0  , 0 );
    addComponent( c, gbl, sum, 3, 5, 1, 1, 0  , 0 );
    addComponent( c, gbl, erg, 3, 6, 1, 1, 0 , 0 );

    f.setSize( 250, 250);
    f.setVisible( true );
  }
}
 

VfL_Freak

Top Contributor
Moin,

indem Du zum Button
Java:
JButton erg = new JButton( "=" );
einen Listener hinzufügst, der dann die jeweilige Rechenoperation entsprechend des eingegebenen 'Textes' ausführt ...

Gruß Klaus
 

VfL_Freak

Top Contributor
Moin,

entweder Du schreibst Die einen eigenen Stringparser dafür oder Du merkst Dir bei jedem Buttonklick/jeder Eingabe die jeweiligen Rechenoperationen sowie die Operanden!
Mit einer Suche sollten sich dazu auch sicherlich dutzende von Beispielen finden lassen, da dies Thema ja immermal wieder hochkommt !

Gruß Klaus
 

Detlef7able

Aktives Mitglied
Ich habe etwas gefunden mit dem Strings sozusagen berechnet werden können.
Das result speichere ich in der Variablen berechnung, diese muss ich aber in einem dritten ActionListener aufrufen.
Wie kann ich die Variable berechnung unten im 3.ActionListener aufrufen?

Java:
ActionListener al =new ActionListener(){
        public void actionPerformed(ActionEvent e){
            ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
             String text = ((JButton)e.getSource()).getText();
             field.setText(field.getText()+text);
            
             try {
                    // Evaluate the expression
                    Object result = engine.eval(field.getText());
                    String berechnung = String.valueOf(result);
                    System.out.println(result);
                }
                catch (ScriptException h) {
                    System.out.println("Fehler");
                    h.printStackTrace();
                }
           
             if(e.getSource() == sum){
                 field.setText(field.getText());
             }
             else if(e.getSource() == sub){
                 field.setText(field.getText());
             }
             else if (e.getSource() == mult){
                 field.setText(field.getText());
             }
             else if (e.getSource() == div){
                 field.setText(field.getText());
             }
         }
    };
    ActionListener al2=new ActionListener(){
        public void actionPerformed(ActionEvent f){
            field.setText("");
        }
    };
    ActionListener al3= new ActionListener(){
        public void actionPerformed(ActionEvent g){
           
    }
  };
 

Java20134

Bekanntes Mitglied
Indem du die Variable als Objectvariable verwendest und sie mit null initialisierst und nun in dem ActionListener noch überprüft, ob der String null ist und wenn nicht...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hilde22 Neu Start JButton einfügen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
melaniemueller setCharAt Leerzeichen zusätzlich einfügen Java Basics - Anfänger-Themen 8
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
R Inventar und Items auf ein 2D ArrayFeld einfügen Java Basics - Anfänger-Themen 2
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
V_Fynn03 Erste Schritte Einen Wert in ein TextField einfügen aus einer anderen Klasse Java Basics - Anfänger-Themen 3
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
O Naives links rechts einfügen in ADT Baum Java Basics - Anfänger-Themen 8
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
J In einer Klasse ein AlertDialog einfügen Java Basics - Anfänger-Themen 4
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
x-tshainge Java Bilder einfügen Java Basics - Anfänger-Themen 1
T Variablen “ in String einfügen Java Basics - Anfänger-Themen 1
Orkanson Objekte in ein Array einfügen Java Basics - Anfänger-Themen 5
S Doppelte Liste Einfügen Java Basics - Anfänger-Themen 1
X Objekte in ArrayList einfügen Java Basics - Anfänger-Themen 10
jaleda100 JTextArea Zeile einfügen Java Basics - Anfänger-Themen 1
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
JavaNewbie2.0 Tausende Wörter in Arrays automatisch einfügen Java Basics - Anfänger-Themen 10
J Wie kann ich Images per Tastendruck anzeigen/einfügen? Java Basics - Anfänger-Themen 3
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
J Scroll-Leiste einfügen Java Basics - Anfänger-Themen 12
U Sound einfügen Java Basics - Anfänger-Themen 6
P String zerstückeln und in Excel einfügen Java Basics - Anfänger-Themen 11
J Objecte in TreeSet einfügen klappt nicht Java Basics - Anfänger-Themen 5
P Variablen Wie kann ich eine lokale Variable in eine andere Methode einfügen? Java Basics - Anfänger-Themen 27
S Bild einfügen Java Basics - Anfänger-Themen 16
B Vererbung In offener Hash Tabelle einfügen Java Basics - Anfänger-Themen 4
W Listenelement einfügen Java Basics - Anfänger-Themen 9
P OOP Eingabevariablen der Klasse Raum in der Methode addEvent ans Ende einer ArrayList einfügen Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
GadgetSofa IOException fehlt aber wo einfügen? Java Basics - Anfänger-Themen 6
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
A Objekte in eine Liste einfügen Java Basics - Anfänger-Themen 7
J Methoden Einfügen von Objekten nach Alphabet in ArrayList funktioniert nicht Java Basics - Anfänger-Themen 2
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
F Collections Sortierung und Einfügen von Elementen Java Basics - Anfänger-Themen 1
K Erste Schritte Classe in andere Einfügen?? Java Basics - Anfänger-Themen 12
P Klasse in Klasse einfügen (arrayliste) Java Basics - Anfänger-Themen 7
F Bibliotheken einfügen ??? Java Basics - Anfänger-Themen 2
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
Q Erste Schritte In CharArrayWriter Zeichen an Stelle einfügen Java Basics - Anfänger-Themen 4
J Daten in eine JList einfügen Java Basics - Anfänger-Themen 6
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
J Button in extra Klasse festlegen und in anderer Klasse einfügen? Java Basics - Anfänger-Themen 3
J GUI Button Klasse in anderer Klasse einfügen Java Basics - Anfänger-Themen 3
E HILFE Projekt für die Schule--> Bilder einfügen Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
D String aus txt in label für Tabelle einfügen Java Basics - Anfänger-Themen 8
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
I fertige xml-datein in eine noch aufzubauende xml-datei einfügen Java Basics - Anfänger-Themen 4
N JTable - Zellfarben ändern, GUI-Komponenten in Zellen einfügen Java Basics - Anfänger-Themen 5
B Ordner in jar dateien einfügen Java Basics - Anfänger-Themen 4
S Erste Schritte Bluej Automatisches Einfügen von Objekten Java Basics - Anfänger-Themen 4
A String aus anderer Klasse in JTextArea einfügen Java Basics - Anfänger-Themen 7
J Bild einfügen Java Basics - Anfänger-Themen 3
S Musik einfügen funktioniert noch nicht Java Basics - Anfänger-Themen 6
K paint() mit einfügen Java Basics - Anfänger-Themen 14
A Sortiertes Einfügen in Liste Java Basics - Anfänger-Themen 2
B org.apache.commons.... Folder in Projekt einfügen Java Basics - Anfänger-Themen 6
Kenan89 String in ObjectList einfügen Java Basics - Anfänger-Themen 2
H Bilder im GUI einfügen Java Basics - Anfänger-Themen 12
A SwingX in Eclipse einfügen Java Basics - Anfänger-Themen 5
B Einfügen von Dateien Java Basics - Anfänger-Themen 10
M Java String " einfügen Problem Java Basics - Anfänger-Themen 2
M Video in ClassLoader einfügen Java Basics - Anfänger-Themen 7
S Itext und eine neue Zeile einfügen Java Basics - Anfänger-Themen 2
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
D Werte aus Excel in Diagramm einfügen Java Basics - Anfänger-Themen 6
K Fehler beim Einfügen eines Programm Icons Java Basics - Anfänger-Themen 6
Binary.Coder Vor und nach jeder Codezeile etwas einfügen Java Basics - Anfänger-Themen 3
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
D Input/Output Zeilen aus txt-datei in Java-Liste einfügen Java Basics - Anfänger-Themen 9
J JPG in einem Label einfügen und anzeigen lassen Java Basics - Anfänger-Themen 2
T Bild in JFrame einfügen Java Basics - Anfänger-Themen 2
L Element in Mitten eines Arrays einfügen Java Basics - Anfänger-Themen 3
S an bestimmter stelle löschen / einfügen Java Basics - Anfänger-Themen 5
K Bild einfügen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben