Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 5. diel - PRIPOMIENKOVÉ narodenín v Java Swing - Logická vrstva

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Atrament
Člen
Avatar
Odpovedá na Dominik Bican
Atrament:23.8.2020 18:52

Ukaž obsah svého OsobaJDialog.java

Avatar
Odpovedá na Atrament
Dominik Bican:23.8.2020 19:40
import java.text.ParseException;
import java.time.LocalDate;
import javax.swing.JOptionPane;


/**
 *
 * @author Domča a Lenča
 */
public class OsobaJDialog extends javax.swing.JDialog {

    public Osoba osoba = null;

    /**
     * Creates new form OsobaJDialog
     */
    public OsobaJDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jmenoJTextField = new javax.swing.JTextField();
        narozeninyJFormattedTextField = new javax.swing.JFormattedTextField();
        okJButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Přidat osobu");

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/adduser.png"))); // NOI18N

        jLabel2.setText("Jméno");

        jLabel3.setText("Datum narození");

        narozeninyJFormattedTextField.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter()));

        okJButton.setText("OK");
        okJButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                okJButtonActionPerformed(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()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE)
                            .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(narozeninyJFormattedTextField, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jmenoJTextField)))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(117, 117, 117)
                                .addComponent(okJButton))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(77, 77, 77)
                                .addComponent(jLabel1)))
                        .addGap(0, 71, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(39, 39, 39)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jmenoJTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(narozeninyJFormattedTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(okJButton)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void okJButtonActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            LocalDate narozeniny = Datum.naparsuj(narozeninyJFormattedTextField.getText());
            osoba = new Osoba(jmenoJTextField.getText(), narozeniny);
            dispose();
        } catch (ParseException | IllegalArgumentException ex) {
            JOptionPane.showMessageDialog(null, "Chyba: " + ex.getMessage());
        }
    }

    /**
     * @param args the command line arguments
     */

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JTextField jmenoJTextField;
    private javax.swing.JFormattedTextField narozeninyJFormattedTextField;
    private javax.swing.JButton okJButton;
    // End of variables declaration

    public Osoba getOsoba() {
        return osoba;
    }
}
Avatar
Atrament
Člen
Avatar
Odpovedá na Dominik Bican
Atrament:23.8.2020 20:06

Nemáš správně nastavenou FormatterFactory na narozeninyJFormatedTextField, máš tam :

narozeninyJFormattedTextField.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter()));

ale mělo by to být

narozeninyJFormattedTextField.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(new java.text.SimpleDateFormat("d.M.yyyy"))));

pokud pracuješ s datumem ve stejném formátu jako je v tutoriálech.
Jak to správně nastavit je ukázané v předchozím článku v podkapitolce o JFormattedTextField

Avatar
Odpovedá na Atrament
Dominik Bican:23.8.2020 21:46

Moc ti díky, funguje to :-)

Avatar
Jan Krupa
Člen
Avatar
Jan Krupa:16.7.2023 13:19

V té třídě Datum má metoda "zformátuj" mít v parametru LocalDate (s ohledem na to, jak se s tím dále v seriálu pracuje). Je to asi prkotina, kterou si každý, kdo prošel OOP, uvědomí, přesto jsem na to chtěl upozornit.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 5 správy z 15.