Announcement

Collapse
No announcement yet.

JFormattedTextField: Inhalt löschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JFormattedTextField: Inhalt löschen

    also ich hab das ein JFormattedTextField in das ich ein Datum eingeben will.
    Das geht auch wunderbar.
    Aber leider lässt das Feld, wenn einmal etwas reingeschrieben wurde, kein Löschen des Inhaltes mehr zu.
    Ich kann den Inhalt nurnoch ändern.

    JFormattedTextField bisZeitzwei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));

  • #2
    jFormattedTextField.setText("");
    Christian

    Comment


    • #3
      Ein Beispiel, welches deine Implementation des TextFields benutzt und welches auf Knopfdruck den Inhalt löscht:


      Code:
      import java.text.SimpleDateFormat;
      public class NewJDialog extends javax.swing.JDialog
      {
      public NewJDialog(java.awt.Frame parent,boolean modal)
          {
          super(parent,modal);
          initComponents();
          }
          private void initComponents() {
              jFormattedTextField1 = new javax.swing.JFormattedTextField(new SimpleDateFormat("HH.mm"));
              jButton1 = new javax.swing.JButton();
              setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
              jFormattedTextField1.setText("22:10");
              jButton1.setText("jButton1");
              jButton1.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                      jButton1ActionPerformed(evt);
                  }
              });
              javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
              getContentPane().setLayout(layout);
              layout.setHorizontalGroup(
                  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(layout.createSequentialGroup()
                      .addContainerGap()
                      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                          .addComponent(jFormattedTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                          .addComponent(jButton1))
                      .addContainerGap(317, Short.MAX_VALUE))
              );
              layout.setVerticalGroup(
                  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(layout.createSequentialGroup()
                      .addContainerGap()
                      .addComponent(jFormattedTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                      .addGap(18, 18, 18)
                      .addComponent(jButton1)
                      .addContainerGap(228, Short.MAX_VALUE))
              );
              pack();
          }
      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
          jFormattedTextField1.setText("");
      }
      public static void main(String args[])
          {
          java.awt.EventQueue.invokeLater(new Runnable()
          {
          public void run()
              {
              NewJDialog dialog=new NewJDialog(new javax.swing.JFrame(),true);
              dialog.addWindowListener(new java.awt.event.WindowAdapter()
              {
              public void windowClosing(java.awt.event.WindowEvent e)
                  {
                  System.exit(0);
                  }
              });
              dialog.setVisible(true);
              }
          });
          }
          private javax.swing.JButton jButton1;
          private javax.swing.JFormattedTextField jFormattedTextField1;
      }
      Christian

      Comment


      • #4
        hi danke für die antworten ein button wollt ich nicht extra implementieren dafür
        und das mit FormattedTextField.setText("");
        ist mir schon klar die frage ist wo ich das setzen müsste
        im keylistener??? oder wo sollte man das reinsetzen wenn der User eine zeit eingeben hat und ihm doch diese nicht gefällt

        Comment


        • #5
          Originally posted by speedliner View Post
          hi danke für die antworten ein button wollt ich nicht extra implementieren dafür
          und das mit FormattedTextField.setText("");
          ist mir schon klar die frage ist wo ich das setzen müsste
          im keylistener??? oder wo sollte man das reinsetzen wenn der User eine zeit eingeben hat und ihm doch diese nicht gefällt
          Das ist doch wohl eine völlig andere Frage, als

          Aber leider lässt das Feld, wenn einmal etwas reingeschrieben wurde, kein Löschen des Inhaltes mehr zu.
          Ich kann den Inhalt nurnoch ändern.
          Man den Inhalt mit den üblichen Mitteln löschen (Backspace, markieren&entfernen, usw)

          oder wo sollte man das reinsetzen wenn der User eine zeit eingeben hat und ihm doch diese nicht gefällt
          Da hier keiner weiss, ob der User eine Zeit eingeben muss usw. - also die Anfordernungen für die Steuerung dieses GUI-Element- wird man diese Frage nicht beantworten können. Da wo du das new machst, sollte der Punkt sein, wo du das setText machen solltest. Woher weisst du denn beim new das es jetzt der Zeitpunkt ist, an dem der Anwender das Feld löschen will?
          Wäre es möglich, eine vollständige Frage mit den relvevanten Infos und ggf. dem Code zu stellen?
          Zuletzt editiert von Christian Marquardt; 06.10.2010, 12:51.
          Christian

          Comment


          • #6
            Das Problem ist schon 5 Jahre alt?

            http://www.java-forum.org/awt-swing-...mehr-leer.html
            Christian

            Comment


            • #7
              ja aber ohne antwort nützt mir der link nix

              so hab ich das feld anglegt
              JFormattedTextField bisZeitzwei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));
              es wird automatisch beim Anzeigen des Frames das feld mit einer uhrzeit vorbelegt
              wenn man jetzt das feld löschen will klappt das nur ab und zu und beim 2ten mal gar nicht mehr
              dann wird immer die vorbelgung wieder angezeigt
              das vorbelegen wird durch ein event ausgelöst wenn der user ein projekt ausgewählt hat was in der JCombobox steht

              Comment


              • #8
                Was soll man sagen, in dem Democode von mir kann man das Feld löschen. Also wird es an irgendeinem Code bei dir liegen.
                Hellsehen kann ich nicht. Was war an

                Wäre es möglich, eine vollständige Frage mit den relvevanten Infos und ggf. dem Code zu stellen?
                unklar?
                Zuletzt editiert von Christian Marquardt; 06.10.2010, 17:58.
                Christian

                Comment


                • #9
                  nein den code kann ich hier nicht posten
                  ist schon klar das es bei dir geht das geht bei mir auch wenn ich ein extra button setzte der die zeiten löscht, aber wie ich schon gesagt hab ich will kein button setzen dafür

                  Comment


                  • #10
                    nein den code kann ich hier nicht posten
                    Dann wird das keinen Sinn haben hier weiter zu posten zu diesem Thema; weitere 5 Jahre warten...
                    Zuletzt editiert von Christian Marquardt; 06.10.2010, 21:18.
                    Christian

                    Comment


                    • #11
                      so ich poste mal den gekürzten code
                      public class Arbeitszeit extends JPanel {

                      JLabel arbeiten = new JLabel("Arbeitszeiten:");
                      JLabel arstunden = new JLabel("Arbeitsstunden:");
                      JLabel einzelH = new JLabel("");
                      JLabel gesamtH = new JLabel();

                      JRadioButton einsja = new JRadioButton("ja");
                      JRadioButton einsno = new JRadioButton("nein");
                      ButtonGroup buttgroup = new ButtonGroup();

                      JFormattedTextField vonZeiteins= new JFormattedTextField (new SimpleDateFormat("HH.mm"));
                      JFormattedTextField vonZeitzwei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));
                      JFormattedTextField vonZeitdrei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));
                      JFormattedTextField bisZeiteins= new JFormattedTextField (new SimpleDateFormat("HH.mm"));
                      JFormattedTextField bisZeitzwei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));
                      JFormattedTextField bisZeitdrei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));

                      public Arbeitszeit(){

                      buttgroup.add(einsja);
                      buttgroup.add(einsno);

                      setLayout(new BorderLayout());
                      JPanel p1G = new JPanel(new GridLayout(1,3));
                      p1G.add(arbeiten);

                      JPanel p1N = new JPanel(new GridLayout(3,2));
                      p1N.add(new JLabel("von: ",JLabel.RIGHT));
                      p1N.add(vonZeiteins);
                      p1N.add(new JLabel("von: ",JLabel.RIGHT));
                      p1N.add(vonZeitzwei);
                      p1N.add(new JLabel("von: ",JLabel.RIGHT));
                      p1N.add(vonZeitdrei);


                      JPanel p2N = new JPanel(new GridLayout(3,2));
                      p2N.add(new JLabel("bis: ",JLabel.RIGHT));
                      p2N.add(bisZeiteins);
                      p2N.add(new JLabel("bis: ",JLabel.RIGHT));
                      p2N.add(bisZeitzwei);
                      p2N.add(new JLabel("bis: ",JLabel.RIGHT));
                      p2N.add(bisZeitdrei);

                      p1G.add(p1N);
                      p1G.add(p2N);

                      JPanel p2G = new JPanel(new GridLayout(2,1));
                      JPanel p4N = new JPanel(new GridLayout(1,4));
                      p4N.add(arstunden);
                      p4N.add(new JLabel(" "));
                      p4N.add(einzelH);
                      p4N.add(new JLabel(" "));

                      JPanel p5N = new JPanel(new GridLayout(1,6));
                      p5N.add(new JLabel("Gesamtstunden: "));
                      p5N.add(gesamtH);
                      p5N.add(new JLabel(" "));
                      p5N.add(new JLabel("ansehen: "));
                      p5N.add(einsja);
                      p5N.add(einsno);

                      p2G.add(p4N);
                      p2G.add(p5N);

                      add(p1G,BorderLayout.CENTER);
                      add(p2G,BorderLayout.SOUTH);
                      }
                      }
                      ------------------------------------------------------------------------------------------------
                      public class Neueintrag extends JFrame implements ActionListener,KeyListener{


                      Arbeitszeit timeClock = new Arbeitszeit();

                      public Neueintrag(){

                      setTitle("DeProGu");
                      for ( String s : Converter.getProjekte())
                      headerNorth.projekt.addItem( s );

                      JPanel p2 = new JPanel();
                      p2.setLayout(new BorderLayout());
                      p2.add(timeClock,BorderLayout.NORTH);
                      p2.add(notiz,BorderLayout.CENTER);

                      add(headerNorth,BorderLayout.NORTH);
                      add(p2,BorderLayout.CENTER);
                      add(buttonfooter,BorderLayout.SOUTH);
                      setSize(700,600);
                      setLocationRelativeTo(null);

                      notiz.deleteButton.addActionListener(this);
                      notiz.savButton.addActionListener(this);
                      timeClock.einsja.addActionListener(this);
                      timeClock.einsno.addActionListener(this);
                      buttonfooter.abbrechen.addActionListener(this);
                      buttonfooter.speichern.addActionListener(this);
                      buttonfooter.close.addActionListener(this);
                      headerNorth.datum.addActionListener(this);
                      headerNorth.projekt.addActionListener(this);

                      timeClock.vonZeiteins.addKeyListener(this);
                      timeClock.vonZeitzwei.addKeyListener(this);
                      timeClock.vonZeitdrei.addKeyListener(this);
                      timeClock.bisZeiteins.addKeyListener(this);
                      timeClock.bisZeitzwei.addKeyListener(this);
                      timeClock.bisZeitdrei.addKeyListener(this);
                      }

                      @Override
                      public void actionPerformed(ActionEvent e) {
                      // TODO Auto-generated method stub
                      Object source = e.getSource();

                      if(e.getSource() == notiz.savButton){
                      String txt = notiz.eingabe.getText();
                      String ebene = notiz.setEbene.getText();
                      if (!txt.equals("") && !txt.startsWith(" ") && !ebene.equals("")
                      && !txt.startsWith("-") && !ebene.startsWith("0")) {
                      if (e.getSource() == notiz.savButton){
                      Converter.setNotizen(txt,ebene);
                      notiz.eingabe.setText("");
                      notiz.setEbene.setText("");
                      }
                      }
                      }
                      if (e.getSource() == notiz.deleteButton)
                      liste.setModel(Converter.deleteNotizen(liste.getSe lectedIndex()));

                      if(source==buttonfooter.abbrechen)
                      {
                      this.setVisible(false);
                      new MainMenu().setVisible(true);
                      }
                      if(source==buttonfooter.speichern)
                      {
                      try {
                      Converter.saveNotizNeu(setNeueintrag());
                      } catch (Exception e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                      }
                      this.setVisible(false);
                      new MainMenu().setVisible(true);
                      }
                      if(source==buttonfooter.close)
                      {
                      try {
                      Converter.saveNotizNeu(setNeueintrag());
                      } catch (Exception e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                      }
                      this.setVisible(false);
                      System.exit(0);
                      }

                      if(source==timeClock.einsja)
                      {
                      timeClock.gesamtH.setText(Converter.getGesamtzeit( (String) headerNorth.projekt.getSelectedItem()));

                      }
                      if(source==timeClock.einsno)
                      {
                      timeClock.gesamtH.setText(" ");
                      }
                      if(source == headerNorth.datum){
                      liste.setModel(Converter.getNotizen((String) headerNorth.projekt.getSelectedItem(),
                      headerNorth.datum.getText()));
                      setUhrzeiten(Converter.getVorhandeneZeiten((String ) headerNorth.projekt.getSelectedItem(),
                      headerNorth.datum.getText()));

                      }
                      if(source == headerNorth.projekt){
                      liste.setModel(Converter.getNotizen((String) headerNorth.projekt.getSelectedItem(),
                      headerNorth.datum.getText()));
                      setUhrzeiten(Converter.getVorhandeneZeiten((String ) headerNorth.projekt.getSelectedItem(),
                      headerNorth.datum.getText()));
                      if(timeClock.einsja.isSelected()){
                      timeClock.gesamtH.setText(Converter.getGesamtzeit( (String) headerNorth.projekt.getSelectedItem()));
                      }
                      }
                      }

                      @Override
                      public void keyPressed(KeyEvent e) {
                      // TODO Auto-generated method stub
                      }

                      @Override
                      public void keyReleased(KeyEvent e) {
                      // TODO Auto-generated method stub
                      }

                      @Override
                      public void keyTyped(KeyEvent e) {
                      // TODO Auto-generated method stub
                      try {
                      timeClock.einzelH.setText(Converter.getArbeitszeit (setEinzelStunden()));
                      } catch (ParseException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                      }
                      }

                      public String[] setEinzelStunden(){

                      String[] einzelstunden;
                      ArrayList<String> zwischenpuffer = new ArrayList<String>();
                      String von = timeClock.vonZeiteins.getText();
                      String bis = timeClock.bisZeiteins.getText();

                      if (von.length()== 5 && bis.length()== 5) {
                      zwischenpuffer.add(von);
                      zwischenpuffer.add(bis);
                      }
                      von = timeClock.vonZeitzwei.getText();
                      bis = timeClock.bisZeitzwei.getText();

                      if (von.length()== 5 && bis.length()== 5) {
                      zwischenpuffer.add(von);
                      zwischenpuffer.add(bis);
                      }
                      von = timeClock.vonZeitdrei.getText();
                      bis = timeClock.bisZeitdrei.getText();

                      if (von.length()== 5 && bis.length()== 5) {
                      zwischenpuffer.add(von);
                      zwischenpuffer.add(bis);
                      }
                      einzelstunden = new String[zwischenpuffer.size()];
                      for(int i = 0;i<zwischenpuffer.size();i++){
                      einzelstunden [i]= zwischenpuffer.get(i);
                      }
                      return einzelstunden;
                      }

                      public void setUhrzeiten (String[] alleZeiten){

                      if(alleZeiten == null){
                      timeClock.vonZeiteins.setText("07.00");
                      timeClock.bisZeiteins.setText("10.00");
                      timeClock.vonZeitzwei.setText("10.30");
                      timeClock.bisZeitzwei.setText("12.00");
                      timeClock.vonZeitdrei.setText("14.00");
                      timeClock.bisZeitdrei.setText("19.30");
                      timeClock.einzelH.setText("10h");
                      return;
                      }

                      if(alleZeiten.length>0){
                      timeClock.vonZeiteins.setText(alleZeiten[0]);
                      timeClock.bisZeiteins.setText(alleZeiten[1]);
                      timeClock.vonZeitzwei.setText(alleZeiten[2]);
                      timeClock.bisZeitzwei.setText(alleZeiten[3]);
                      timeClock.vonZeitdrei.setText(alleZeiten[4]);
                      timeClock.bisZeitdrei.setText(alleZeiten[5]);
                      try {
                      timeClock.einzelH.setText(Converter.getArbeitszeit (setEinzelStunden()));
                      } catch (ParseException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                      }
                      }
                      }

                      public String[] setNeueintrag(){

                      int index = 0;
                      int von = 0;
                      int bis = 1;
                      String[] einzelstunden = setEinzelStunden();
                      int anzahl = ((einzelstunden.length+1)/2)+3;
                      String[] notizen = new String[anzahl];

                      notizen[index] = headerNorth.datum.getText();
                      index++;
                      notizen[index] = timeClock.einzelH.getText();;
                      index++;

                      for(int i=1;i<=((einzelstunden.length+1)/2);i++){

                      notizen[index] = einzelstunden[von]+"-"+einzelstunden[bis];
                      von = von + 2;
                      bis = bis + 2;
                      index++;
                      }

                      notizen[index] = " ["+headerNorth.projekt.getSelectedItem()+ "]";
                      index++;
                      return notizen;

                      }
                      }

                      Comment


                      • #12
                        Wo ist jetzt das Problem?
                        Eine Zeile, wo du irgendwo

                        JFormattedTextField bisZeitzwei= new JFormattedTextField (new SimpleDateFormat("HH.mm"));

                        um das Field zu löschen kann ich nicht finden.

                        Wahrscheinlich liegt es an deiner Kürzung, aber die Klasse Neueintrag lässt sich nicht fehlerfrei hier aufbauen.

                        Sofern es bei dir funktioniert kann es nur an der Implementierung der Keylisteners liegen. Da kann ein debuggen klären
                        Christian

                        Comment


                        • #13
                          so habs nun raus warum es sich nicht löschen lässt das JFormattedTextField ist standardmäßig

                          JFormattedTextField.COMMIT_OR_REVERT Similar to COMMIT, but if the value isn't legal, behave like REVERT.

                          The default is JFormattedTextField.COMMIT_OR_REVERT, refer to setFocusLostBehavior(int) for more information on this.

                          gesetzt. bedeutet das wenn jemand was falsches eingibt automatisch der letzt richtige Wert zurückgeholt wird

                          Comment


                          • #14
                            In meinem Beispiel lässt sich der Wert auch löschen, wenn o.a. Defaulteinstellung vorhanden ist?

                            Und das hat nichts mit dem Button zu tun, denn der führt ja nur das setText aus...
                            Zuletzt editiert von Christian Marquardt; 08.10.2010, 21:24.
                            Christian

                            Comment

                            Working...
                            X