Vytvoření dalšího Frame – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vytvoření dalšího Frame – Java – Fórum – Programujte.comVytvoření dalšího Frame – Java – Fórum – Programujte.com

 

xxx
~ Anonymní uživatel
55 příspěvků
17. 7. 2012   #1
-
0
-

Začínám s GUI a mám problém. Jedu dle koupené knížky Herouta. Potřebuji poradit.

- chtěl bych vytvořit po stisknutí (eventu) tlačítka3, které zároveň mění barvu hlavního okna vytvořit nové okno. Chtěl jsem to vytvořit analogicky jako vnitřní třídu class Tlacitko33 extends Frame kdy konstruktor Tlacitko33() by vytvořil podobné okenko s jedním buttonem ale nějak to nejde. Nemůžete mi někdo poradit? Předem díky

import java.awt.*;
import java.awt.event.*;
class Tlacitko32 extends Frame {
Button Tlacitko1,Tlacitko2,Tlacitko3;
Label Navesti1,Navesti2;
Tlacitko32() {
  super.setTitle("Nazev xx okenka");
  this.setBackground(Color.MAGENTA);
  this.setLayout(new FlowLayout());
  Tlacitko1 = new Button("Zmena textu 1");this.add(Tlacitko1);
  Navesti1 = new Label("Kecy cislo 1");this.add(Navesti1);
  Tlacitko2 = new Button("Zmena textu 2");this.add(Tlacitko2);
  Navesti2 = new Label("Kecy cislo 2");this.add(Navesti2);
  Tlacitko3 = new Button("Zmena barvy okenka");this.add(Tlacitko3);
  Tlacitko1.addActionListener(new callTlacitko1());
  Tlacitko2.addActionListener(new callTlacitko2());
  Tlacitko3.addActionListener(new callTlacitko3());
  this.addWindowListener(new Ukonceni());
  this.setSize(450,250); }
class callTlacitko1 implements ActionListener {
  public void actionPerformed(ActionEvent arg0) { Navesti1.setText("Snadne kecy");} }
class callTlacitko2 implements ActionListener {
  public void actionPerformed(ActionEvent arg0) { Navesti2.setText("Jine kecy");} }
class callTlacitko3 implements ActionListener {
  public void actionPerformed(ActionEvent arg0) {
   Tlacitko3.setBackground(Color.blue); } }
class Ukonceni extends WindowAdapter {
  public void windowClosing(WindowEvent e) {
   System.exit(1); } } }
class ZmenaBarvy extends Tlacitko32 implements ActionListener{
int cervena=255;
ZmenaBarvy() { // konstruktor
  Tlacitko3.addActionListener(this);
  Color pozadi = new Color(cervena,0,0);
  this.setBackground(pozadi); }
public void actionPerformed(ActionEvent e) {
  cervena =(cervena - 25) > 0 ? cervena - 25: 255;
  this.setBackground(new Color(cervena,0,0)); } }
public class GUI020 {
public static void main(String [] args) {
  new ZmenaBarvy().setVisible(true);
}
}

Nahlásit jako SPAM
IP: 213.220.199.–
liborb
~ Redaktor
+18
Guru
18. 7. 2012   #2
-
0
-

Třeba bych ti i poradil, ale ten tvůj zhuštěný a nepřehledný kód je absolutně nečitelný  

Nahlásit jako SPAM
IP: 78.80.52.–
xxx
~ Anonymní uživatel
55 příspěvků
18. 7. 2012   #3
-
0
-

import java.awt.*;
import java.awt.event.*;
class Tlacitko40 extends Frame {
  Button Tlacitko1; // deklarace Tlacitko1
  Label Navesti1; // deklarace Navesti1
  Tlacitko40() { // zacatek konstruktoru
    super.setTitle("Nazev xx okenka");
    this.setBackground(Color.MAGENTA);
    this.setLayout(new FlowLayout());
    Tlacitko1 = new Button("Zmena textu 1");this.add(Tlacitko1);
    Navesti1 = new Label("Kecy cislo 1");this.add(Navesti1);
    Tlacitko1.addActionListener(new callTlacitko1()); // přiřazení události tlačítku a zavolání metody
    this.setSize(450,250); } // konec konstruktoru
  class callTlacitko1 implements ActionListener { // vnitřní třída provádějící zmenu pozadí tlacitka
    public void actionPerformed(ActionEvent arg0) {
     Tlacitko1.setBackground(Color.blue); Navesti1.setText("Snadne kecy"); }         }
}
public class Test {
public static void main(String [] args) {
  new Tlacitko40().setVisible(true);   }
}

No tak jsem to trochu zjednodušil. Aktuálne se po stisknutí objektu Tlacitka1 zavola vnitřní třída callTlacitko1 a provede zmenu pozadi v tlacitku. Znáš nějaký postup který po stisknutí tlačitka mi umožní vytvořit nové okno s buttonky,labely atd.. ( část zdrojáku, i odkaz na web stránky, či knihu atd..) nedělá mi problém si to nastudovat.

Nahlásit jako SPAM
IP: 213.220.199.–
liborb
~ Redaktor
+18
Guru
19. 7. 2012   #4
-
0
-

Uděláš si to nové okno (něco jako):

class JinyFrame extends Frame {
	JinyFrame() { // zacatek konstruktoru
		super.setTitle("Druhy frame");
		this.setSize(450,250);			    
	}
}

a to nejlépe do jiného souboru.

No a pak do obsluhy tlačítka vložíš to, co do main (jenom pro nové okno):

// vnitřní třída provádějící zmenu pozadí tlacitka
class callTlacitko1 implements ActionListener { 
	public void actionPerformed(ActionEvent arg0) {
		Tlacitko1.setBackground(Color.blue);
		Navesti1.setText("Snadne kecy");
		new JinyFrame().setVisible(true);
	}    
}

To ti na každý stisk tlačítka vytvoří nové okno, takže si jich můžeš udělat dle libosti. A všimni si, jak je to krásně čitelné :). Příště alespoň vkládej zdrojový kód do tomu určené "kolonky".

Nahlásit jako SPAM
IP: 78.80.52.–
xxx
~ Anonymní uživatel
55 příspěvků
25. 7. 2012   #5
-
0
-

#3 xxx
V každé případě díky moc. Funguje to. Když jsem to viděl fakt měl chut se bouchnout do hlavy, že mě to nenapadlo.

Nahlásit jako SPAM
IP: 213.220.199.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Frame a Jframe — založil Herm

Volanie Frame z metódy — založil Anonym

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý