Diskuze: JComponenty nad třídou s Graphics

Java Java JComponenty nad třídou s Graphics

Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Cs lidi mám problém s JComponentama.
Mám třídu Screen a v ní mam Graphics, která něco vykresluje.
Třídu Screen mam v GridBagLayoutu spolu s ostatníma JComponentama.
A já potřebuju, aby ta jedna JComponenta (např: JTextField) překrývala tu třídu Screen.
Vypadá to takhle:

private GridBagConstraints g;
private JTextField txt01;
private Screen s;
private JPanel pan01;

metoda kde přidávam JComponenty, atd... :

setLayout(new GridBagLayout());
                g = new GridBagConstraints();

                txt01 = new JTextField();
                txt01.setPreferredSize(new Dimension(29, 29));
                g.gridx = 1;
                g.gridy = 0;
                add(txt01, g);

                //Screen - hlavní grafika
                s = new Screen();
                s.setUbits(bits);
                if(gen){s.fill();s.fillG();}
                g.gridx = 1;
                g.gridy = 0;
                add(s, g);

                //panel pro ovládání
                pan01 = new JPanel();
                pan01.setLayout(new GridBagLayout());
                g.gridx = 0;
                g.gridy = 0;
                g.gridheight = 4;
                g.insets = new Insets(5, 5, 5, 5);
                add(pan01, g);

Ale ten JTextField není nad tím Screenem, jak se to dá vyřešit, když tam potřebuju ten GridBagConstraints ?
Vím že jsem se na to už ptal s jiným příkladem, ale tam jsem neměl GridBagConstraints a šlo to vyřešit jinak. Stejným způsobem to tady nejde(teda aspoň mě :D).

Odpovědět 17.12.2014 12:31
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Té části, jak je tam

s.setUbits(bits);
if(gen){s.fill();s.fillG();}

si nevšímejte.

Editováno 17.12.2014 12:41
Nahoru Odpovědět 17.12.2014 12:41
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tomhaus
David Čápka:

SWING bych už dnes vůbec nepoužíval, je zastaralý a dávno překonaný JavaFX. Vypadá to, jako bys dělal nějakou hru, tam se většinou naprogramují prostě vlastní TextFieldy, které se vykreslují na plátno. Ten javovský bych přes to nedával, překrývat komponenty imho není dobrá praktika.

Nahoru Odpovědět 17.12.2014 12:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na David Čápka
Tomhaus:

Já vim jak to myslíš, ale JavaFX je jen v NetBeans nebo ne?

Není to hra, ale algoritmus pro systematické kódování.

Editováno 17.12.2014 12:52
Nahoru Odpovědět 17.12.2014 12:50
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Tomhaus:

Tak sem to udělal, jak si říkal: vlastní JTextFieldy
Jenom než sem na to přišel mi nějakou dobu trvalo, páč se ty vpisovací pole posunujou s jinými hodnotami. Hodně složitý, když tam mam 4 ty hodnoty.
Ale přišel sem na to. A udělal jsem to pomocí MouseListeneru a runnablu.

Teď si stačí od třídy, kam sem dal ten vlastní JTextField, vyžádat pozici a tradá vykreslovat hodnoty (stačí mi jen 0 a 1). Takže ještě přidat KeyListener.

Editováno 17.12.2014 13:26
Nahoru Odpovědět 17.12.2014 13:25
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
Avatar
Tomhaus
Člen
Avatar
Odpovídá na David Čápka
Tomhaus:

Jo a na tu JavaFX se taky podívam :)

Nahoru Odpovědět 17.12.2014 13:27
Být lepší a chytřejší je důležité, ale někdy se musíme spokojit s tím, co máme.
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.