Git Product home page Git Product logo

j1-ukol06's Introduction

Úkol 6 – Husy a králíci

Naprogramujte aplikaci, která se hodí každému farmáři a farmářce.

Máte malou farmu s husami a králíky. Když zadáte do appky počet králíků a počet hus, appka vám vypočítá, kolik nohou a hlav na farmě je. Mutanti a zvířata bez nožiček a hlaviček se nepočítají.

Pozor, JTextFieldy s výslednými hodnotami by neměly být editovatelné (tj. měly by být read-only), ale pořád by mělo jít v nich označit hodnotu a zkopírovat jit do schránky (Ctrl+C / Cmd+C).

V aplikaci už je připraven dvousloupcový layout, první sloupec je určen pro popisky (label), druhý sloupec pro vstupní pole (textfield).

Aplikace bude po spuštění vypadat např. takhle:

snímek obrazovky

Rady na cestu

JTextField má vlastnosti editable a enabled. (Připomínám, že vlastnost/property znamená, že existuje odpovídající setter a getter.) Vyzkoušejte, jaký je mezi nimi rozdíl a která se hodí pro splnění úkolu.

Aritmetiku provádějte v proměnné typu int. Převod ze String na int se provede takto:

String text1 = …;
int cislo1 = Integer.parseInt(text1);

Převod z int na String se provede takto:

int cislo2 = …;
String text2 = Integer.toString(cislo2);

Případně můžete rovnou připojit int do Stringu:

int cislo3 = …;
String text3 = "Počet králíků: " + cislo3;

Neplatné hodnoty zadané do JTextFieldu neřešte.

Tip: bývá zvykem textová pole pro čísla zarovnávat vpravo. Zarovnání textu v textfieldu nastavuje následující kód:

textField.setHorizontalAlignment(JTextField.TRAILING);

Bonus 1

Místo JTextField můžete použít JSpinner, což je komponenta, která umožňuje pomocí šipek krokovat hodnoty. Používá se často právě pro zadávání čísel – neumožní zadat jiné znaky, než číslice, a navíc umožní uživateli jedním kliknutím zvýšit nebo snížit hodnotu (typicky o jedničku, ale lze to změnit). V jednodušší variantě vytvoříte nový JSpinner voláním prázdného konstruktoru new JSpinner(). Tím vznikne číselný spinner s výchozí hodnotou 0, který krokuje po jedné a nemá žádné omezení (kladné ani záporné). Zadanou hodnotu pak získáš voláním metody getValue() – výsledek však budete muset přetypovat na Integer:

JSpinner spinner = new JSpinner();
int cislo4 = (Integer) spinner.getValue();

Bonus 2

Ve vylepšené variantě můžete konstruktoru spinneru předat instanci SpinnerModelNumber, která umožňuje nastavit výchozí hodnotu, velikost kroku, ale hlavně minimální a maximální hodnotu. Nastavte je tak, aby nebylo možné zadat záporný počet kusů. Dokumentaci najdete zde: SpinnerModelNumber.

j1-ukol06's People

Contributors

filipjirsak avatar anetabelzova avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.