JAVA Equals JLabel

0

Witam Chcę napisać program który gdy na Labe(JLabel) Wypisze się tekst Gotowe ma zrobić określoną rzecz ale ten teks zostanie wyświetlony gdy do Field(JTextField) Wpisz się odpowiedni tekst i tu jest problem ponieważ on sprawdza czy to jest tam wypisane Od razu bo włączeniu programu raz i później już nie Zamieszczam kod programu

 import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Tak {


    public static void main(String[] args)  {
        



    Ramka ramka = new Ramka();
    ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ramka.show();
    JOptionPane.showMessageDialog(ramka,"Witam w Programie");
    
    
    }
}
    
    
     class Ramka extends JFrame
    {
        private static final int SZEROKOSC = 400;
        private static final int WYSOKOSC = 300;
    

        public Ramka()
        {            
            
        JPanel Panel = new JPanel();
          final JLabel Labe2 = new JLabel("");
        final JLabel Labe = new JLabel("Początek Matha");
         final JTextField Field = new JTextField("Tu Wpisz hasło");
            
            Panel.add(Field,BorderLayout.NORTH);
            Panel.add( Labe,BorderLayout.SOUTH);
            Panel.add(Labe2);
            
            Container powZawartosci = getContentPane();
            powZawartosci.add(Panel,BorderLayout.CENTER);
            
            JMenuBar bar = new JMenuBar();
            JMenu Plik = new JMenu("Plik");
            JMenuItem Wybor = new JMenuItem("Wybór pliku");
            
            Labe2.setVisible(false);
            Plik.add(Wybor);
            bar.add(Plik);
        setJMenuBar(bar);
        setSize(WYSOKOSC ,SZEROKOSC);
    meto metok = new meto(Labe.getText() );

            
            
        
        
    
            Field.addKeyListener(new java.awt.event.KeyAdapter(){
                public void keyReleased(KeyEvent evt)
                {
                metoda( Field.getText());    
                }
                void metoda ( String txt){ if(txt.equals("1234567890")){
                    Labe.setText("Gotowe");
                }};
                    
                
                
        
        
         });}}
     
         
          class meto
         {
             public meto(String string)
             {
            JLabel Labe3 = new JLabel("a");
            JPanel p = new JPanel();
            p.add(Labe3);
             if(string.equals("Gotowe")) 
            {
                System.out.println(Labe3);
            } 
             
         
    }} 

Dzięki z góry za pomoc. A i po tym Jeszcze bd wykonywane inne akcje dlatego kod taki dziwny :)

0

Wyborne formatowanie.

(Sformatuj to bo odstraszasz ludzi, którzy mogą pomóc. Za kulawe formatowanie kodu posty powinny według mnie lecieć do Kosza.)

0

Niestety nie jestem tu Zarejestrowany i nie mogę Wy edytować :(

0

To ładnie sformatuj (w NetBeans służy do tego domyślnie Alt+Shift+F) i wklej jeszcze raz.

0

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Label;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**

*/
public class Tak {

public static void main(String[] args) {

	Ramka ramka = new Ramka();
	ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	ramka.show();
	JOptionPane.showMessageDialog(ramka, "Witam w Programie");

}

}

class Ramka extends JFrame {
private static final int SZEROKOSC = 400;
private static final int WYSOKOSC = 300;

public Ramka() {

	JPanel Panel = new JPanel();
	final JLabel Labe2 = new JLabel("");
	final JLabel Labe = new JLabel("Początek Matha");
	final JTextField Field = new JTextField("Tu Wpisz hasło");

	Panel.add(Field, BorderLayout.NORTH);
	Panel.add(Labe, BorderLayout.SOUTH);
	Panel.add(Labe2);

	Container powZawartosci = getContentPane();
	powZawartosci.add(Panel, BorderLayout.CENTER);

	JMenuBar bar = new JMenuBar();
	JMenu Plik = new JMenu("Plik");
	JMenuItem Wybor = new JMenuItem("Wybór pliku");

	Labe2.setVisible(false);
	Plik.add(Wybor);
	bar.add(Plik);
	setJMenuBar(bar);
	setSize(WYSOKOSC, SZEROKOSC);
	meto metok = new meto(Labe.getText());

	Field.addKeyListener(new java.awt.event.KeyAdapter() {
		public void keyReleased(KeyEvent evt) {
			metoda(Field.getText());
		}

		void metoda(String txt) {
			if (txt.equals("1234567890")) {
				Labe.setText("Gotowe");
			}
		};

	});
}

}

class meto {
public meto(String string) {
JLabel Labe3 = new JLabel("a");
JPanel p = new JPanel();
p.add(Labe3);
if (string.equals("Gotowe")) {
System.out.println(Labe3);

	}

}

}

Zrobiłem tak jak powiedziałeś:)

0

No i w sumie kod działa. Tylko klasa meto jest dziwna. Po pierwsze klasy z dużej litery się pisze (czyli np Meto), a pola z małej (czyli np labe, panel, field itd).

Jeśli chcesz nasłuchiwać na zmiany w modelu jakiegoś JTextFielda to chyba musisz zrobić getDocument().addDocumentListener(...). W przypadku JLabela musisz dać addPropertyChangeListener(...) i nasłuchiwać na zdarzenie typu "text".

Swing ma trochę skomplikowaną mechanikę (niekoniecznie dobrą). Sam się go uczę teraz i często sięgam do źródeł JDK. W NetBeansie wystarczy kliknąć prawym na wywołanie niezrozumiałej funkcji dać Navigate -> Go to Source i już jesteśmy przy kodzie funkcji (oczywiście o ile podaliśmy te źródła NetBeansowi).

0

Poradziłem se już Konstruktor meto przeniosłem w inne miejsce Zamieszczę kod

void metoda(String txt) {
                                if (txt.equals("1234567890")) {
                                        Labe.setText("Gotowe");
                                           meto metok = new meto(Labe.getText(), Labe);

Dzięki temu konstruktor jest wywoływany wtedy gdy Warunek jest spełniony :) Troche zmodyfikowałem ten kod już:) thx za pomoc

0

KURDE! UŻYWAJ JAKIŚ ZNAKÓW PRZESTANKOWYCH!

1 użytkowników online, w tym zalogowanych: 0, gości: 1