error messages in simpel formulier

Status
Niet open voor verdere reacties.

Clemens Schalkw

Gebruiker
Lid geworden
5 dec 2007
Berichten
166
Ik heb een simpel formulier waarbij de opmaak enz niet is gedaan.
Ik heb gewoon een JFrame met daarin een aantal JPanels en daarin JLabels en JTextFields.
Ik heb een Save button (JButton) welke een System.out.println() doet als je erop klikt.
Niks bijzonders dus.

Nu wil ik kijken of ik een error message kan setten als bijvoorbeeld een naam niet is ingevuld.
Ik dacht dus gewoon een lege JLabel achter het JTextField van Name te zetten en een nieuw JLabel te maken als het JTextField niet wordt ingevuld. Ik kan alleen niet checken met if (JTextField == null) of if (JTextField.isEmpty()).
Hoe zou ik dat wel kunnen doen ?
Hieronder mijn code tot nu toe:

Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
 *
 * @author Condor
 */
public class TestForm {
    private JFrame form;

    private JPanel pnlName;
    private JPanel pnlAddress;
    private JPanel pnlPostalcode;
    private JPanel pnlCity;
    private JPanel mainPanel;

    private JLabel lblName;
    private JLabel lblAddress;
    private JLabel lblPostalcode;
    private JLabel lblCity;
    
    private JTextField txtName;
    private JTextField txtAddress;
    private JTextField txtPostalcode;
    private JTextField txtCity;

    private JButton btnSave;

    public TestForm() {
        form = new JFrame("First Form");
        form.setLayout(new BorderLayout());
        form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        mainPanel = new JPanel(new GridLayout(5,1));

        pnlName = new JPanel(new FlowLayout());
        lblName = new JLabel("Name :");
        txtName = new JTextField(20);

        pnlName.add(lblName);
        pnlName.add(txtName);

        pnlAddress = new JPanel(new FlowLayout());
        lblAddress = new JLabel("Address :");
        txtAddress = new JTextField(20);

        pnlAddress.add(lblAddress);
        pnlAddress.add(txtAddress);

        pnlPostalcode = new JPanel(new FlowLayout());
        lblPostalcode = new JLabel("Postalcode :");
        txtPostalcode = new JTextField(20);

        pnlPostalcode.add(lblPostalcode);
        pnlPostalcode.add(txtPostalcode);

        pnlCity = new JPanel(new FlowLayout());
        lblCity = new JLabel("City :");
        txtCity = new JTextField(20);

        pnlCity.add(lblCity);
        pnlCity.add(txtCity);

        btnSave = new JButton("Save");
        btnSave.addActionListener(new SaveAction());

        mainPanel.add(pnlName);
        mainPanel.add(pnlAddress);
        mainPanel.add(pnlPostalcode);
        mainPanel.add(pnlCity);
        mainPanel.add(btnSave);

        form.add(mainPanel, BorderLayout.CENTER);

        form.pack();
        form.setVisible(true);
    }

    private class SaveAction implements ActionListener {
        public void actionPerformed(ActionEvent e) {
           System.out.println("De ingevoerde gegevens zijn opgeslagen");
        }
    }

    public static void main(String[] args) {
        TestForm t = new TestForm();
    }

}
 
Laatst bewerkt:
wat je wilt is
if (txtName.getText().isEmpty()) {
lblName.setText("naam is leeg");
}
 
pffffffffffff, ja inderdaad.
.getText() die had ik zelf ook kunnen bedenken.
Nou sorry voor het storen :confused: en bedankt :thumb:
 
mmhhhh. Ik heb nu een label toegevoegd aan pnlName (JPanel):

Als instance variable heb ik dan
Code:
 private JLabel lblNameErr;
Ik initialiseer hem in de constructor
Code:
 lblNameErr = new JLabel("");

En in mijn actionPerformed van mijn SaveAction inner-class zet ik dan:

Code:
    private class SaveAction implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            if (txtName.getText().isEmpty()) {
                lblNameErr.setText("naam invullen");
            }
           System.out.println("De ingevoerde gegevens zijn opgeslagen");
        }
    }

Er gebeurt echter niks. Is txtName niet empty by default ofzo ?

[EDIT]

Sterker nog. Mijn derde label wordt helemaal niet toegevoegd. Als ik lblNameErr een vaste waarde geef komt het er ook al niet te staan.
Weet iemand toevallig hoe dat komt.

[/EDIT]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan