Portál AbcLinuxu, 10. května 2025 13:25

Dotaz: jednoduchý kalendář v Javě

TomasABC32 avatar 3.12.2016 22:50 TomasABC32 | skóre: 28 | blog: LinuxGangster
jednoduchý kalendář v Javě
Přečteno: 524×
Odpovědět | Admin
Zdravím, snažím se naprogramovat si jednoduchý kalendář. Po spuštění programu by se mi měl jen jednoduše zobrazit kalendář obdobný z lišty ve Windows, ve kterém bude zvýrazněn aktuální den. Dokážete mě malinko nasměrovat, jak to udělat ? Mám zatím jen základní strukturu okna:
import javax.swing.JFrame;

public class OknoProgramu extends JFrame {

    public OknoProgramu() {
        this.setTitle("Kalendář");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 300);
    }

    public static void main(String[] args) {
        OknoProgramu okno = new OknoProgramu();
        okno.setVisible(true);
    }
}
Linux forever ! Asi jinej gang.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.12.2016 22:37 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je dosť chudá kostra ;-)

A kde je problém? Pridať tam hromadu JLabel-ov s LineBorder-om alebo JButton-ov?

Alebo je problém zrátať, na aký deň v týždni pripadne nejaký dátum?
TomasABC32 avatar 5.12.2016 08:58 TomasABC32 | skóre: 28 | blog: LinuxGangster
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
to je pravda, že tam toho moc není. Jde mi spíš o to, dát mě tip kudy na to jít. Jinak se v tom budu babrat dál sám.
Linux forever ! Asi jinej gang.
5.12.2016 09:52 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
Mno ...

a) budeš potrebovať objekt triedy Calendar. Z nej sa dá zistiť, na aký deň v týždni pripadá dnešok a tiež či prvý deň v mesiaci. Umožňuje zmeniť deň na prvý deň v mesiaci. Umožňuje k danému dátumu (napr. prvému dňu mesiaci) prirátať jeden deň. Umožňuje pre daný dátum zistiť, ktorý je to deň v týždni. A tiež umožňuje zistiť, koľko dní v mesiaci má mesiac, do ktorého spadá zvolený dátum.

b) V tomto so možno divný, ale mám rád GridBagLayout. Takže nastavím GridBagLayout, nastavím GridBagConstraints gridy na 0 a budem pridávať JLabel s číslom dňa v mesiaci postupne pre všetky dni v mesiaci a keď prídem na na nedeľu, tak inkrementujem gridy, čím prejdem na prvý riadok. Bonus body ak správne zrátaš gridx pre prvý deň v mesiaci a potom ho vrátiš na 'relative'.

c) no a potom s môžeš hrať s tým, že JLabel-u dáš horizontal alignment, gridbagconstraintom-tu dáš horizontal fill, east anchor, pár pixelov padding, pár pixelov insets, line border, ...

Takže hor sa smelo do toho. Keď pridáš pár riadkov tak sa zasa ozvi ;-)
5.12.2016 10:31 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
Místo Calendar doporučuji použít joda datetime nebo přímo datetime z nové java 8. Podstatně příjemnější hraní s datumy.
TomasABC32 avatar 5.12.2016 15:40 TomasABC32 | skóre: 28 | blog: LinuxGangster
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
Linux forever ! Asi jinej gang.
5.12.2016 16:02 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
Nejlépe java8 a java.time , např. ukázky.

Pokud nemůžeš javu 8 (?), pak joda datetime.
TomasABC32 avatar 5.12.2016 16:16 TomasABC32 | skóre: 28 | blog: LinuxGangster
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
Díky, ty příklady jsou skvělý. Na tom dneska začnu.
Linux forever ! Asi jinej gang.
TomasABC32 avatar 5.12.2016 19:15 TomasABC32 | skóre: 28 | blog: LinuxGangster
Rozbalit Rozbalit vše Re: jednoduchý kalendář v Javě
ten tvůj odkaz se mi moc líbí. Kdyby něco podobného bylo napsáno ke všem knihovnám, abych si mohl zkoušet jednotlivé funkce to by bylo skvělý.
Linux forever ! Asi jinej gang.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.