NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 5 - Upomínač narozenin v Java Swing - Logická vrstva

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Atrament
Člen
Avatar
Odpovídá na Dominik Bican
Atrament:23.8.2020 18:52

Ukaž obsah svého OsobaJDialog.java

 
Odpovědět
23.8.2020 18:52
Avatar
Odpovídá 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;
    }
}
 
Odpovědět
23.8.2020 19:40
Avatar
Atrament
Člen
Avatar
Odpovídá 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

 
Odpovědět
23.8.2020 20:06
Avatar
Odpovídá na Atrament
Dominik Bican:23.8.2020 21:46

Moc ti díky, funguje to :-)

 
Odpovědět
23.8.2020 21:46
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.

 
Odpovědět
16.7.2023 13:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 15.