[Java] Komma in Textfeld eingeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von leex, 26. Oktober 2010 .

  1. 26. Oktober 2010
    Komma in Textfeld eingeben

    Habe hier ein kleines Programm geschrieben das eine betrag abzüglich %-te ausgibt...

    Nun würde ich gerne noch bewerkstelligen, dass man auch kommazahlen eingeben kann...statt mit einem punkt ...

    wie kann ich das lösen?

    Code:
    package taschenrechner;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.util.Locale;
    import java.lang.Object;
    import java.text.Format;
    import java.text.NumberFormat;
    import java.text.DecimalFormat;
    
    
    public class Main extends Frame implements ActionListener
    {
     TextField Eingabe_betrag;
     Label Betrag, Ergebnisausgabe2, Ergebnisausgabe3,
     copyright, DreiProzent, ZweiProzent;
     Button Ausgabe;
    
     double var,erg2, erg3;
    
     
     public static void main(String[] args)
     {
     Main wnd = new Main();
     wnd.setSize(340,200);
     wnd.setLocation(700,300);
    
     }
    
     public Main()
     {
     super("Skontorechner");
     setBackground(Color.orange);
     addWindowListener(new WindowClosingAdapter11(true));
     GridBagLayout Fenster = new GridBagLayout();
     GridBagConstraints Konstante;
     Font font = new Font("System", Font.BOLD, 22);
     Font font1 = new Font("Arial", Font.BOLD, 18);
     setLayout(Fenster);
     setResizable(false);
    
     
     Betrag = new Label("Betrag: ");
     Betrag.setFont(font1);
     Eingabe_betrag = new TextField();
     copyright = new Label("© Thomas Ritter");
     Ausgabe = new Button("Ausgeben");
     ZweiProzent = new Label("2%: ");
     ZweiProzent.setFont(font1);
     DreiProzent = new Label("3%: ");
     DreiProzent.setFont(font1);
     Ergebnisausgabe2 = new Label();
     Ergebnisausgabe2.setFont(font);
     Ergebnisausgabe2.setForeground(Color.red);
     Ergebnisausgabe3 = new Label();
     Ergebnisausgabe3.setFont(font);
     Ergebnisausgabe3.setForeground(Color.red);
    
     Konstante = makegbc(0, 0, 1, 1);
     Konstante.weightx = 10;
     Konstante.weighty = 50;
     Konstante.fill = GridBagConstraints.NONE;
     Fenster.setConstraints(Betrag, Konstante);
     add(Betrag);
    
     Konstante = makegbc(1, 0, 1, 1);
     Konstante.weightx = 50;
     Konstante.weighty = 100;
     Konstante.ipadx = 20;
     Konstante.fill = GridBagConstraints.NONE;
     Fenster.setConstraints(Eingabe_betrag, Konstante);
     add(Eingabe_betrag);
     
     Konstante = makegbc(2, 0, 2, 1);
     Konstante.weightx = 50;
     Konstante.weighty = 50;
     Konstante.fill = GridBagConstraints.HORIZONTAL;
     Fenster.setConstraints(Ausgabe, Konstante);
     add(Ausgabe);
    
     
     Konstante = makegbc(1, 1, 1, 1);
     Konstante.weightx = 50;
     Konstante.weighty = 100;
     Konstante.fill = GridBagConstraints.NONE;
     Fenster.setConstraints(ZweiProzent, Konstante);
     add(ZweiProzent);
    
     Konstante = makegbc(1, 2, 1, 1);
     Konstante.weightx = 50;
     Konstante.weighty = 100;
     Konstante.fill = GridBagConstraints.NONE;
     Fenster.setConstraints(DreiProzent, Konstante);
     add(DreiProzent);
    
     Konstante = makegbc(2, 1, 1, 1);
     Konstante.weightx = 100;
     Konstante.weighty = 50;
     Konstante.fill = GridBagConstraints.HORIZONTAL;
     Fenster.setConstraints(Ergebnisausgabe2, Konstante);
     add(Ergebnisausgabe2);
    
     Konstante = makegbc(2, 2, 1, 1);
     Konstante.weightx = 100;
     Konstante.weighty = 50;
     Konstante.fill = GridBagConstraints.HORIZONTAL;
     Fenster.setConstraints(Ergebnisausgabe3, Konstante);
     add(Ergebnisausgabe3);
    
     Konstante = makegbc(1, 4, 2, 1);
     Konstante.weightx = 100;
     Konstante.weighty = 100;
     Konstante.fill = GridBagConstraints.HORIZONTAL;
     Fenster.setConstraints(copyright, Konstante);
     add(copyright);
     
     Ausgabe.addActionListener(this);
    
     this.Eingabe_betrag.addKeyListener
     (new KeyAdapter()
     {
     public void keyPressed(KeyEvent e)
     {
     int key = e.getKeyCode();
     if (key == KeyEvent.VK_ENTER)
     {
     var = new Double(Eingabe_betrag.getText());
     erg3 = var - (var * 0.03);
     erg2 = var - (var * 0.02);
     Ergebnisausgabe2.setText(""+erg2+" €");
     Ergebnisausgabe3.setText(""+erg3+" €");
     }
     }
     }
     );
    
    
    
     
     setVisible(true);
     pack();
     }
    
     private GridBagConstraints makegbc(
     int x, int y, int width, int height)
     {
     GridBagConstraints Konstante = new GridBagConstraints();
     Konstante.gridx = x;
     Konstante.gridy = y;
     Konstante.gridwidth = width;
     Konstante.gridheight = height;
     Konstante.insets = new Insets(1, 1, 1, 1);
     return Konstante;
     }
    
     public void actionPerformed(ActionEvent event)
     {
     Object source = event.getSource();
    
     var = new Double(Eingabe_betrag.getText());
    
     if(source==Ausgabe)
     {
     erg3 = var - (var * 0.03);
     erg2 = var - (var * 0.02);
     Ergebnisausgabe2.setText(""+erg2+" €");
     Ergebnisausgabe3.setText(""+erg3+" €");
     }
     }
    
    
    
     
    }
    
    
    
    
    
     
  2. 26. Oktober 2010
    AW: Komma in Textfeld eingeben

    Du kannst ja den eingegangen String auf Zeichen überprüfen .. sollte das gewünschte Zeichen enthalten sein, dann wandelst du es einfach intern um.


    Also:

    Benutzer gibt ein: ,, 13,13 "

    Intern wird nach dem Zeichen "," im String gesucht, wenn gefunden, wird das Zeichen in einen "." umgewandelt, damit du intern damit rechnen kannst.

    Um einen String bearbeiten zu können, brauchst du einen StringBuffer.

    So solltest du es eigentlich selbst lösen können.

    Es geht auch einfach(er) so...

    Bisschen PseudoCode:
    Code:
    public class tt {
    
     public static void main(String[] args) {
     
     String s = ",blah";
     
     System.out.println(s.replace(",", "."));
    
     }
    
    }

    // edit:
    mit deinen Bezeichnungen etc. solltest du aufpassen, weil du dich nicht an den Standard hälst^
     
  3. 26. Oktober 2010
    AW: Komma in Textfeld eingeben

    ich hab leider keine ahnung wie ich das jetzt in meinen code einbauen soll ... habe gerade mit replace versucht, jedoch kann ich trotzdem dann nichts eingeben mit komma ... gibt er nicht mal den string aus der eingeben wurde :/
     
  4. 26. Oktober 2010
    AW: Komma in Textfeld eingeben

    Zeile 160:

    Anstatt:
    Code:
    var = new Double(Eingabe_betrag.getText());
    machste:
    Code:
    var = new Double(Eingabe_betrag.getText().replace(",", "."));
    Und schon biste fertig... jetzt kannste sowohl . als auch , eingeben.


    Dein Code ist sehr komisch..^^..in 2Tagen blickst du 100% selbst nicht mehr durch den Code durch... gewöhn dir das mal fix ab.
     
  5. 27. Oktober 2010
    AW: Komma in Textfeld eingeben

    doch blick ich schon weil ich den code von nem prog aus meiner schulzeit vor nem jahr ausgegraben hab und nur umgeschrieben dann ....


    aber was sollte ich ändern, dass es passt? (Namenskonvetionen weiß ich, mach ich )


    edit: geht übrigens, danke .... jetzt müsst ich noch wissen wie ich das ganze auf 2 stellen runden kann ...

    hab

    BigDecimal myDec = new BigDecimal( erg2 );
    myDec = myDec.setScale( 2, BigDecimal.ROUND_HALF_UP );

    versucht ... klappt aber iwie nicht :/
     
  6. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    Code:
    NumberFormat n = NumberFormat.getInstance();
    n.setMaximumFractionDigits(2);
    System.out.println(n.format(doubleValue));
    
     
  7. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    habs so einfügt:

    Code:
    NumberFormat n = NumberFormat.getInstance();
     n.setMaximumFractionDigits(2);
     Ergebnisausgabe2.setText(""+n.format(erg3)+" €");

    funktioniert aber leider nicht ...
     
  8. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    Kann es sein, dass du gar kein Grundwissen hast bzw. nicht in der Lage bist einfache beispiele um zu setzen? Was funktioniert denn nicht? Mit dem Satz "funktioniert nicht" kann hier niemand was anfangen.

    Gib uns mal ne Fehlermeldung
     
  9. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    meine grundkenntnisse halten sich sehr in grenzen ... wie gesagt is ne weile her und war auch nur in der schule immer ... hab sonst nie was daheim noch gemacht ...


    es kommt keine fehlermeldung ... syntaktisch ist alles richtig ... nur im programm wirds halt nicht gerundet dann..
     
  10. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    wo ist das problem bei google "java +round" einzugeben ??

    myDouble = Math.round( myDouble * 100. ) / 100.;
     
  11. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    ok funktioniert danke.......aber er rundet mir jetzt immer auf ganze zahlen ... wie kann ich auf 2 stellen runden?
     
  12. 28. Oktober 2010
    AW: Komma in Textfeld eingeben

    Hast du vllt. den Punkt nach der letzten 100 vergessen?
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.