Diskuze: [Java] umístění komponent na form

Java Java [Java] umístění komponent na form

Avatar
Vítězslav Škrabal:

Zdravím
Pokouším se učit programovat v javě na grafické bázi v prostředí Eclipse.Nedaří se mi umístit komponenty například JBotton na místo kde já chci zatím se mi podařilo umístit pár komponent ale jedna za druhou viz příloha

 
Odpovědět 13. ledna 19:16
Avatar
Martin Križan:

Skús do okna najprv umiestniť "Absolute layout" a až na ten umiestňovať ďalšie komponenty.

Editováno 13. ledna 21:23
 
Nahoru Odpovědět 13. ledna 21:21
Avatar
Atrament
Člen
Avatar
Atrament:

Prostuduj si jak se pracuje s jednotlivými layouty - https://docs.oracle.com/…t/index.html. Pokud chceš dávat komponenty vysloveně kam se ti zlíbí, zaměř se na takzvaný Absolute Layout, což je prázdný layout, kde specifikuješ jednotlivým komponentám přesnou lokaci pomocí souřadnic, ale to je postup který nemohu doporučit, protože takhle umístěné komponenty jsou tam natvrdo zadrátované - když resizneš okno tak na to nebudou nijak reagovat.

 
Nahoru Odpovědět 13. ledna 21:27
Avatar
Martin Križan:

Môžeš použiť aj iný layout ale pomocou tohto umiestniš komponenty presne tam kde chceš. Ja väčsinou v eclipse používam ešte gridlayout. Na "robenie okien" je však podĺa mňa lepší netbeans a sceenbuilder.

 
Nahoru Odpovědět 13. ledna 21:29
Avatar
Odpovídá na Martin Križan
Vítězslav Škrabal:

Skús do okna najprv umiestniť "Absolute layout" a až na ten umiestňovať ďalšie komponenty.

Jak se to provede? a ten obrázek co máš přiložený tak to je v Eclipse? popiš krok za krokem jak na to ? díky

 
Nahoru Odpovědět 14. ledna 13:17
Avatar
Martin Križan:

Áno to je eclipse. Tak tu to máš krok po kroku:
1.Klikni pravým tlačítkom na package projektu, zvoľ New a potom Other.(obr.1) Dá sa to aj klávesovou skratkou Ctrl+N..
2.Malo by sa ti zobraziť okno kde vyberáš čo chceš vytvoriť, ty zvolíš WindowBuilder potom Swing Designer a vyberieš JFrame(obr.2).
3.Nastavíš názov JFrame-u
4.Na grafický návrhár sa dostaneš kliknutím na Design(obr.3)
5.Vybereš AbsoluteLayout (alebo niaky iný, proste ten ktorý chceš) a vložíš ho do okna kliknutím.
6.Môžeš umiestňovať komponenty kam chceš.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 14. ledna 15:24
Avatar
Odpovídá na Martin Križan
Vítězslav Škrabal:

3.Nastavíš názov JFrame-u

To mě nevezme hlásí to chybu ale není mi jasné jak se to propojí z hlavní třídou ,jinak mě to velmi pomohlo díky

 
Nahoru Odpovědět 14. ledna 17:27
Avatar
Martin Križan:

Ten vytvorený JFrame je hlavná trieda. Akú chybu?

 
Nahoru Odpovědět 14. ledna 18:11
Avatar
Odpovídá na Martin Križan
Vítězslav Škrabal:

Už to pomalu chápu velice ti děkuji za pomoc já umím :-) trochu v delphi.Narazil jsem na další problém kde dělám chybu nebo jak to má být ? díky viz příloha

 
Nahoru Odpovědět 14. ledna 20:39
Avatar
Martin Križan:

Neviem čo si tým chcel dosiahnuť.
Ak si chcel to aby bol ten RadioButton zaškrtnutý treba použiť setter

rdbtnTam.setSelected(true)

a ak si chcel aby sa spustil niaky kód keď je zaškrtnuty použi podmienku

if(rdbtnTam.isSelected()){
        //kód
}

Odporúčam ti prečítať si články na tejto stránke o swingu je tu toho celkom dosť.

 
Nahoru Odpovědět 14. ledna 21:48
Avatar
Vítězslav Škrabal:

Díky za pomoc tak to má být tak to funguje mně dělají problémy bloky začínající "{" a končící "}"

JButton btnKlik = new JButton("Klik");
                btnKlik.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent arg0) {
                        if      (rdbtnTam.isSelected())
                                                {       progressBar.setValue(i++);}
                        { if (  rdbtnSpet.isSelected())
                            {   progressBar.setValue(i--);}

                                                }
                        }
                });
 
Nahoru Odpovědět 15. ledna 10:24
Avatar
Martin Križan:

Pred tým druhým "if" nemusí byť "{".

 
Nahoru Odpovědět 15. ledna 14:47
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Vítězslav Škrabal
David Novák:

Pokud ti dělají problémy { }, tak zkus používat inteligentní (ano - utahuju si z Javistů :D) zápis:

JButton btnKlik = new JButton("Klik");
btnKlik.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0)
    {
        if (rdbtnTam.isSelected())
        {
           progressBar.setValue(i++);
        }

        if (rdbtnSpet.isSelected())
        {
           progressBar.setValue(i--);
        }
    }
});

Všímáš, jak je to přehlednější a na první pohled vidíš, co k čemu patří a kde jaký blok končí? ;)

Nahoru Odpovědět 15. ledna 16:25
Chyba je mezi klávesnicí a židlí.
Avatar
Atrament
Člen
Avatar
Odpovídá na David Novák
Atrament:

Ono by bohatě stačilo kdyby se naučil používat automatické formátování kódu, které Eclipse určitě umí :)

 
Nahoru Odpovědět 15. ledna 16:44
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Atrament
David Novák:

To jo - výsledek by asi byl stejný.. Ale přece si nenechám utéct příležitost si rýpnout do Javovských konvencí :D

Jinak právě používání IDE je podle mě příčinou jeho problému - nechápe, co to blok je a k čemu slouží..

BTW.. Je Java ok s tímhle?

JButton btnKlik = new JButton("Klik");
btnKlik.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0)
    {
        if (rdbtnTam.isSelected())
           progressBar.setValue(i++);

        if (rdbtnSpet.isSelected())
           progressBar.setValue(i--);
    }
});

V Javě jsem nikdy nic nedělal, takže nevím :P

Nahoru Odpovědět 15. ledna 17:02
Chyba je mezi klávesnicí a židlí.
Avatar
Vítězslav Škrabal:

OK to je v pořádku
Teď chci na komponentě JLabel nastavit visible při i >= -1 na false v události stisku tlačítka ale tam to způsobí chybu ale dole v kódu to funguje 8-|

JLabel label = new JLabel("-1");
label.setVisible(false);
label.setBounds(101, 89, 17, 14);
contentPane.add(label);
 
Nahoru Odpovědět 15. ledna 17:08
Avatar
Atrament
Člen
Avatar
Odpovídá na David Novák
Atrament:

Java jo, já ne :) jsem striktně pro dělaní závorek i okolo pouhého jednoho řádku ve větvích podmínek :)

 
Nahoru Odpovědět 15. ledna 17:27
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Atrament
David Novák:

Já jen, pokud má některou větev, která je delší než jeden řádek.. :P

if (...)
   prikaz;
else if (...)
   prikaz;
else
   prikaz;

Tohle se mi líbí :D

Ale když by tam byla delší větev, tak už udělám všechny s blokem, aby to nebylo škaredé..

if (...)
{
   prikaz;
}
else if (...)
{
   prikaz;
   prikaz;
}
else
{
   prikaz;
}
Nahoru Odpovědět 15. ledna 17:34
Chyba je mezi klávesnicí a židlí.
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 18 zpráv z 18.