Java applet: Als textField leeg is.

Status
Niet open voor verdere reacties.

bjornbos

Gebruiker
Lid geworden
1 feb 2009
Berichten
446
Hallo allemaal,

Ik weet niet hoe ik ervoor kan zorgen dat wanneer er een tekstveld leeg is, daar een error teken bij komt te staan in de vorm van een Rood sterretje: *
Wanneer er op de knop "Verstuur" word geklikt, moet daar onder een zin komen te staan met: "U heeft niet alle gegevens ingevuld".

Dit heb ik tot nu toe:

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

/**
  *
  * beschrijving
  *
  * @version 1.0 van 11-3-2011
  * @author
  */

public class Opdracht02 extends Applet {
  // Begin variabelen

  private Label label1 = new Label();
  private Label label2 = new Label();
  private Label label3 = new Label();
  private TextField textField1 = new TextField();
  private TextField textField2 = new TextField();
  private TextField textField3 = new TextField();
  private Button button1 = new Button();
  private Label label4 = new Label();
  private TextArea textArea1 = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
  private Label label5 = new Label();
  private Label label6 = new Label();
  private Label label7 = new Label();
  // Einde variabelen

  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 312, 257);
    add(cp);
    // Begin componenten
    setBackground(Color.GREEN);
    label1.setBounds(16, 16, 55, 24);
    label1.setText("Naam:");
    label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 17));
    cp.add(label1);
    label2.setBounds(16, 48, 55, 24);
    label2.setText("Adres:");
    label2.setFont(new Font("MS Sans Serif", Font.PLAIN, 17));
    cp.add(label2);
    label3.setBounds(16, 80, 104, 24);
    label3.setText("Woonplaats:");
    label3.setFont(new Font("MS Sans Serif", Font.PLAIN, 17));
    cp.add(label3);
    textField1.setBounds(128, 48, 121, 24);
    textField1.setText("");
    cp.add(textField1);
    textField2.setBounds(128, 16, 121, 24);
    textField2.setText("");
    cp.add(textField2);
    textField3.setBounds(128, 80, 121, 24);
    textField3.setText("");
    cp.add(textField3);
    button1.setBounds(16, 128, 105, 57);
    button1.setLabel("Verstuur");
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1_ActionPerformed(evt);
      }
    });
    button1.setFont(new Font("MS Sans Serif", Font.PLAIN, 21));
    cp.add(button1);
    label4.setBounds(16, 200, 243, 16);
    label4.setText("");
    label4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    label4.setForeground(Color.RED);
    cp.add(label4);
    textArea1.setBounds(128, 128, 121, 57);
    textArea1.setText("");
    textArea1.setEditable(false);
    cp.add(textArea1);
    label5.setBounds(256, 16, 21, 24);
    label5.setText("");
    label5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label5);
    label6.setBounds(256, 48, 21, 24);
    label6.setText("");
    label6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label6);
    label7.setBounds(256, 80, 21, 24);
    label7.setText("");
    label7.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label7);
    // Einde componenten

  }
  // Begin eventmethoden
  public void button1_ActionPerformed(ActionEvent evt) {
    String Naam = textField1.getText();
    String Adres = textField2.getText();
    String Woonplaats = textField3.getText();
    textArea1.setText(Naam+"\n"+Adres+"\n"+Woonplaats);
    label4.setText("Uw gegevens zijn verzonden, dank u wel!");
    button1.enable(false);
    textField1.setText("");
    textField2.setText("");
    textField3.setText("");
  }


  // Einde eventmethoden

}

Ik weet niet zeker of het met de "if" methode moet, maar ik dacht hier aan:

If(textField1 == "");
label5.setText("*");
label4.setText("U heeft niet alle gegevens ingevoerd");

Maar dat werkt dus niet. Ik hoop dat iemand mij verder kan helpen.

Met vriendelijke groet,

Björn Bos
 
Oke, ik ben er inmiddels achter gekomen, alleen nu zit ik met het volgende probleem.

Ik heb deze code gebruikt.

Code:
if(textField1.getText().equals(""))
      {
        label5.setText("*");
      }

Wanneer het tekstveld 1 leeg is, komt daar een sterretje bij te staan.
Alleen, wanneer het veld daarna alsnog word ingevuld, blijft het sterretje staan en dat wil ik niet.

Ik zat te denken aan een een of ander reverse symbool, maar die kan ik nergens vinden.
Welke code kan ik gebruiken dan wanneer veld1 is ingevuld, het sterretje verdwijnt?
 
Ik denk dat ik een symbool nodig hebt dat slaap op "iets".
De combinatie ("") slaat op "niets", en nu moet ik iets hebben dat op "iets" slaat.
 
Code:
if(!textfield.getText().equals("")){
bla
}

Dit is niet niets oftewel, iets.
 
Het werkt, dankjewel!

Nu heb ik nog een vraag.

Wanneer ik druk op "Verstuur" gaat de tekst uit textField1 weg en komt te staan in textArea1. Als ik op nee druk, wil ik dat de tekst terug gaat naar textField1. Hoe doe ik dit?
 
Is inmiddels ook gelukt, niet zoals het hoort, maar dat maakt in principe niet uit.

Mijn laatste vraag:

Hoe zorg ik ervoor, dat wanneer ik in een tekstfield iets invoer en ik op enter druk, hij door springt (als het ware als tab) naar de volgende tekstfield.
 
Dan zou je een actionlistener kunnen koppelen aan je textfield. Binnen deze actionlistener kan je dan de focus naar een ander object verplaatsen.
 
En hoe zou ik dat precies moeten doen?

Iets als:

Code:
textField1.actionListener(ENTER);
textfield2.setFocus();

Hij doet het niet, maar hoe zou ik het dan moeten doen?
 
Bij componenten heb ik nu dit staan:

Code:
textField5.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        textField5_ActionPerformed(evt);
      }
    });

Moet ik nou bij

Code:
  public void textField5_ActionPerformed(ActionEvent evt) {
  
  }

iets neerzetten als: setFocus...?
 
Oke, dit is allemaal gelukt!

Nu wil ik graag hebben dat wanneer de focus op de "verstuur" knop staat, je met enter de knop kan activeren, wat nu dus nog niet kan.

Ik heb hem wel gefocust, maar hij wil niet doormiddel van enter reageren. Wel doormiddel van spatie trouwens?

Groeten.
 
Je zou aan je keylistener een if/else bij de enter toe kunnen voegen.
Code:
if(e.source == textfield){
doe dit
}
else if (e.source == knop){
doe dat
}
 
Oke, maar als ik hem dus wil laten uitvoeren, moet ik daar een opdrachtcode voor hebben. Welke is dit?

Dus doe dit, moet zijn:

Voer uit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan