Rechenoperationen

K

kletterjo

Gast
Hallo,
bin neu hier. Hab ein kleines problem. ich möchte ein einziges programm haben. es soll ein fenster sein (jFrame am besten) in diesem sollen 2 zahlenfelder sein. der standartwert soll 0 null sein in den feldern. neben den beiden felder soll der rechner nach eingabe automatisch die differenz beider anzeigen. wie geht das? bin zu keinem ergebnis gekommen. es kann doch nicht so schwer sein oder doch?

MFG
 

ARadauer

Top Contributor
es kann doch nicht so schwer sein oder doch?[/qutoe]

nö eigentlich nicht.
du hast dein JTextField... davon kannst du dir mit der MEthode getText den Inhalt hohlen... das ist ein String mit dem kannst du nicht rechnen... Integer.parseInt macht dir eine zahl daraus. das ergebnis weißt du dann einem JLabel als Text zu fertig...

den feldern vielleicht noch einen Listener adden um auf die Änderung zu reagieren...
 
K

kletterjo

Gast
danke für die schnelle antwort =)
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 02.11.2010
  * @author
  */

public class test extends JFrame {
  // Anfang Attribute
  private JTextField jTextField1 = new JTextField();
  private JTextField jTextField2 = new JTextField();
  private JLabel jLabel1 = new JLabel();
  // Ende Attribute

  public test(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 358;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jTextField1.setBounds(24, 24, 81, 24);
    jTextField1.setText("jTextField1");
    cp.add(jTextField1);
    jTextField2.setBounds(136, 24, 73, 24);
    jTextField2.setText("jTextField2");
    cp.add(jTextField2);
    jLabel1.setBounds(264, 24, 44, 16);
    jLabel1.setText("jLabel1");
    jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLabel1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  // Ende Methoden

  public static void main(String[] args) {
    new test("test");
  }
}
so sieht es ja aus. kannst du das mal bitte einbauen was du meintest. kenn mich da nich so aus. weiß zwar das get.text den holt aber mehr auch nicht =|
 

Landei

Top Contributor
Bittet, so wird euch gegeben, suchet, so werdet ihr finden, zeiget den Code, so wird euch geholfen. Oder so ähnlich...

[Edit] Ach, da isser ja schon...

Es sollte heißen setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

null-Layout ist nicht besonders hübsch, aber naja...

Ansonsten fehlen die schon von ARadauer erwähnten Listener.

Links:
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16.17 Texteingabefelder
How to Use Text Fields (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
 
Zuletzt bearbeitet:
K

kletterjo

Gast
eigentlich muss es doch auch irgwie so gehen:
label.settext (textfeld1.gettext-textfeld2.gettext);
 
K

kletterjo

Gast
eigentlich muss es doch auch irgwie so gehen:
label.settext (textfeld1.gettext-textfeld2.gettext);

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 02.11.2010
  * @author
  */

public class test extends JFrame {
  // Anfang Attribute
  private JTextField jTextField1 = new JTextField();
  private JTextField jTextField2 = new JTextField();
  private JLabel jLabel1 = new JLabel();
  private JButton jButton1 = new JButton();
  // Ende Attribute

  public test(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    int frameWidth = 462;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jTextField1.setBounds(24, 24, 81, 24);
    jTextField1.setText("jTextField1");
    cp.add(jTextField1);
    jTextField2.setBounds(136, 24, 73, 24);
    jTextField2.setText("jTextField2");
    cp.add(jTextField2);
    jLabel1.setBounds(264, 24, 44, 16);
    jLabel1.setText("FELD EINS MINUS FELD ZWEI NACH KLICK AUF BUTTON");
    jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLabel1);
    jButton1.setBounds(336, 24, 89, 25);
    jButton1.setText("jButton1");
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  // Ende Methoden

  public static void main(String[] args) {
    new test("test");
  }
}
 

Landei

Top Contributor
eigentlich muss es doch auch irgwie so gehen:
label.settext (textfeld1.gettext-textfeld2.gettext);

So ungefähr. Natürlich musst du die Strings erstmal in Zahlen umwandeln, bevor du damit rechnen kannst, und das Ergebnis wieder in einen String, damit du es in setText setzen kannst.

(ungetestet, ohne Fehlerbehandlung)
Java:
double d1 = Double.parseDouble(textfeld1.getText());
double d2 = Double.parseDouble(textfeld2.getText());
label.setText("" + (d1-d2));
 

Neue Themen


Oben