Uživatelská rozhraní Uživatelská rozhraní 8. cvičení
Prerekvizity Java SE Development Kit (JDK) Manuály Specifikace API: Tutoriály: Editory NetBeans, Eclipse, PSPad, …
Layout Management LM ovládají rozmístění komponent v rámci kontejneru. Příkaz pack() přeskupí komponenty tak, aby nezůstalo žádné volné místo. BoxLayoutFlowLayoutGridLayout BorderLayoutGridBagLayout“Null” Layout
Praktická úloha Pro cvičení použijeme šablonu, na které se budeme dále seznamovat s komponentami zahrnutými ve Swing API. Design si můžete upravit libovolně podle sebe. Pokuste se vyzkoušet základní prvky, včetně nastavení jejich vlastností.
GridBagLayout Jeden z nejkomplexnějších layoutů. Umísťuje komponenty do buněk mřížky obdobně jako GridLayout. Řádky i sloupce mohou mít různou velikost. Komponenta může být přes více řádků nebo sloupců (rowspan, columnspan). Umístění komponent se určuje pomocí GridBagConstraint.
GBL - GridBagConstraint Atributy gridx, gridy: Souřadnice levého sloupce a horního řádku pro vložení komponenty. Počátek v (0, 0). GridBagConstraint.RELATIVE – komponenta bude umístěna vpravo nebo pod předchozí vloženou komponentu. Lépe je specifikovat souřadnice vkládané komponenty explicitně. Atributy gridwidth, gridheight: Počet sloupců a počet řádků, které komponenta obsadí (implicitně 1). GridBagConstraint.REMAINDER – komponenta bude poslední v řádku nebo sloupci. GridBagConstraint. RELATIVE – komponenta bude umístěna vedle předchozí.
GBL - GridBagConstraint Atribut fill: Určuje chování komponenty v situaci, kdy volná plocha pro komponentu je větší než tato komponenta. GridBagConstraint.NONE – velikost se nemění GridBagConstraint.HORIZONTAL – roztažení komponenty do šířky GridBagConstraint.VERTICAL – roztažení komponenty do výšky GridBagConstraint.BOTH – komponenta vyplní celou plochu Atributy ipadx, ipady: Specifikují vnitřní doplnění minimálních rozměrů komponenty, implicitně 0. Doplnění je přidáno na obě strany komponenty.
GBL - GridBagConstraint Atribut insets: Vnější okraje komponenty (neboli mezera mezi hranicemi buňky a komponentou), implicitně (0, 0, 0, 0). Atribut anchor: Určuje způsob umístění komponenty v rámci buňky, je-li tato buňka větší než komponenta. FIRST_LINE_STARTPAGE_STARTFIRST_LINE_END LINE_STARTCENTERLINE_END LAST_LINE_STARTPAGE_ENDLAST_LINE_END
GBL - GridBagConstraint Atribut weightx, weighty: Určuje, jak se rozdělí prostor mezi řádky, resp. sloupci, implicitně 0.0, hodnota mezi 0-1. Důležité hlavně při změně velikosti kontejneru.
import javax.swing.JFrame; public class Kalkulacka { static Gui guiKalk; public static void main(String[] args) { guiKalk = new Gui(); guiKalk.pack(); guiKalk.setTitle("Calculator"); guiKalk.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); guiKalk.setMinimumSize(guiKalk.getPreferredSize()); guiKalk.setLocationRelativeTo(null); guiKalk.setVisible(true); }
Nastavení pro JTextField gbConst.gridx = 0; //pozice gbConst.gridy = 0; gbConst.gridwidth = 4; //sloučení přes čtyři sloupce gbConst.gridheight = 1; gbConst.weightx = 1.0; //nastavení váhy gbConst.weighty = 0.0.; gbConst.insets.top = 5; //okraj gbConst.insets.left = 5; gbConst.fill = GridBagConstraints.BOTH;// vyplnění gbConst.anchor = GridBagConstraints.CENTER; //zarovnání this.add(valueText, gbConst);
Look and Feel
class Test implements ActionListener { public void actionPerformed(ActionEvent e) { JButton but = (JButton)e.getSource(); System.out.print(but.getText()); } Button1.setFont(new Font(null,Font.BOLD,12));
Dopracovat výpočet a vzhled. Děkuji za pozornost.