NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Netbeans GUI přidání tlačítka

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Nallim
Člen
Avatar
Nallim:5.8.2015 23:04

Ahoj,
nevím si rady, jak docílit následujícího.

Mám projekt v Netbeans v GUI prostředí (JFrame).
V Desing si přetáhnu tlačítko (JButton) na JFrame a potřebuji, když to tlačítko zmáčknu, tak aby se vytvořil další JButton.

Zkoušel jsem:

add(new JButton("název"));

ale výsledek žádný. Když v konstruktoru zakomentuji

initComponents();

(vygenerovaný kód) a vložím kód

add(new JButton("název"));

do konstruktoru, tak se tlačítko zobrazí.

Nedaří se mi přijít na způsob aby to fungovalo s

initComponents();

Budu rád za jakoukoli radu,
Díky.

Milan

Editováno 5.8.2015 23:06
 
Odpovědět
5.8.2015 23:04
Avatar
Odpovídá na Nallim
balaz.marek94:6.8.2015 6:51

Podobný problém som riešil pred pár mesiacmi. Nemôžeš zabudnúť pri pridaní tlačítka pridať funkciu .setVisible(true). Teda kód na pridanie tlačítka by mohol vyzerať nasledovne:

tvojeOkno.add(new JButton("nazov").setVisible(true));

Mne však robila problém taktiež funkcia .setSize(), takže môj kód vyzeral asi takto:

JButton button = new JButton("Môj button");
mojeOkno.add(button);
button.setLocation(10, 10);
button.setSize(200, 30);
button.setVisible(true);

Snáď som ti pomohol :)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
6.8.2015 6:51
Avatar
Nallim
Člen
Avatar
Odpovídá na balaz.marek94
Nallim:6.8.2015 7:05

Sakra chlape, díky moc.

Jde přesně o .setSize() , musí se nastavit, to mě už nenapadlo.

setVisible jsem také předtím zkoušel a ani se nastavovat nemusí.

Díky za help :)

 
Nahoru Odpovědět
6.8.2015 7:05
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Nallim
Atrament:7.8.2015 10:50

Řešení pomocí nastavování size či snad dokonce udáváním přesných souřadnic kde se má tlačítko nacházet, není zrovna nejšťastnější. (Pominu-li fakt, že už vytváření tlačítka stiskem jiného tlačítka je přinejmenším hodně podivné)

Správně bys měl použít nějaký layout a velikost a umístění tlačítek a dalších prvků nechat na něm. Když například nastavíš tomu JFrame GridLayout a v actionPeformed u tlačítka budeš mít

getContentPane().add(new JButton("Nové tlačítko"));
pack();

pak se při každém stisku tlačítka objeví nové tlačítko.

Doporučuju k podrobnému prostudování https://docs.oracle.com/…t/index.html

Mimochodem - co přesně se má stát, když uživatel bude to tlačítko na vytváření jiného tlačítka mačkat opakovaně třeba pět minut?:)

 
Nahoru Odpovědět
7.8.2015 10:50
Avatar
Nallim
Člen
Avatar
Nallim:7.8.2015 11:08

Díky za odpověď, pomocí getContentPane() jsem to také zkoušel, ale díky nezměnění layoutu (defualtně FreeLayout) jsem se hned k výsledku nedostal, díky za ujasnění.

Nakonec jsem to také vyřešil, jen tím, že jsem změnil layout na FlowLayout a žádné nastavování nebylo zapotřebí.

Ve skutečnosti mi šlo o přidání JTextField, ale pak jsem zjistil, že nevím jak přesně vytáhnout z toho data, tak jsem celou problematiku vyřešil úplně jinak :)

PS: po zmáčknutí tlačítka by došlo k deaktivování onoho tlačítka :)

Editováno 7.8.2015 11:09
 
Nahoru Odpovědět
7.8.2015 11:08
Avatar
Mik13
Člen
Avatar
Mik13:27.8.2015 0:24

JTextField pridat muzes, a muzes ho udelat klikaci jako button, jen to musis pretypovat.
Tak si ten Button pridej, nastav mu invisible a po kliku jineho buttonu se to objevi.
Deaktivaci udelas setEnabled(boolean)

 
Nahoru Odpovědět
27.8.2015 0:24
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 6 zpráv z 6.