• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

GUI Java , "nowa aktywność"

Object Storage Arubacloud
0 głosów
506 wizyt
pytanie zadane 25 czerwca 2018 w Java przez trebuhhh Użytkownik (740 p.)
Witam

Tworzę programik okienkowy, mam jeden układ i chciałbym by po naciśnięciu przycisku pojawił się jakby nowy układ  , nie wiedziałem jak to kompletnie opisać by znaleźć sobie w internecie pomysł. Czy po prostu muszę w action listenerze wyczyścić układ i tworzyć tam ten układ? W androidzie to się nazywało acitivty
1
komentarz 25 czerwca 2018 przez manjaro Nałogowiec (37,390 p.)
Może po prostu napisz własnymi słowami co chcesz osiągnąć to będzie prościej Ci podpowiedzieć. Bo mam wrażenie że chcesz zrobić coś takiego że masz jakiś panel logowania i po zalogowaniu chcesz otworzyć panel dla zalogowanych?
komentarz 26 czerwca 2018 przez trebuhhh Użytkownik (740 p.)
dokładnie tak chcę ;)

piszę w swingu , mam panel do logowania , już mi sprawdza poprawność hasła, ale nie wiem jak po tym zrobić by w tym oknie pojawił się układ po zalogowaniu ?
komentarz 26 czerwca 2018 przez manjaro Nałogowiec (37,390 p.)
edycja 26 czerwca 2018 przez manjaro

W takim razie opcje masz dwie.Jedna i druga dobra zależy od konkretnego przypadku.

1 opcja to zamykasz obecne okno i tworzysz nowy frame Czyli coś takiego

JOptionPane.showMessageDialog(null, "Zalogowano pomyślnie");
mainFrame newFrame = new mainFrame();
newFrame.setVisible(true);
newFrame.pack();
this.dispose();

No i druga opcja na początek przy małych projektach chyba wygodniejsza to użycie Card Layout

 

komentarz 26 czerwca 2018 przez trebuhhh Użytkownik (740 p.)

import javax.swing.*;

import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class interfejs extends JFrame implements ActionListener{
	
	JButton zaloguj, wyjscie;
	JLabel text;
	JTextField login;
	JPanel logowanie;
		
	
	public interfejs () {
		setSize(300,300);
		setLayout(null);
		zaloguj = new JButton("Zaloguj");
		wyjscie = new JButton("Wyjscie");
		text = new JLabel("Login:");
	    login = new JTextField();
		wyjscie.setBounds(110,90,100,50);
		text.setBounds(10,10,100,50);
		login.setBounds(10,50,100,50);
		zaloguj.setBounds(10,90,100,50);
		add(zaloguj);
		add(text);
		add(login);
		add(wyjscie);
		zaloguj.addActionListener(this);
		wyjscie.addActionListener(this);
		login.toString();
	
	}
	


	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		interfejs logowanie = new interfejs();
		logowanie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		logowanie.setVisible(true);
		
	}
	
	
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub 
		Object zrodlo = e.getSource();
		String action = e.getActionCommand();
		String haslo = login.getText();
		String pass = "bylo1";
		
	if ( zrodlo==zaloguj) {
		{
			if(haslo.equals(pass))
			{
				
               
			}
			else
			{
				  JOptionPane.showMessageDialog(null, "Błędny login");
			}
		}
	}
	else
	{
		dispose();
	}
		
//	}

}}

 

czy to jest poprawnie skonstruowane ? narazie w programie pojawia sie okno wpisujemy login klikamy zaloguj i po tym ma pojawic się nowy tak jakby układ po zalogowaniu, ale zdaje mi sie, ze nie do końca poprawnie to zrobiłem ;)

1
komentarz 26 czerwca 2018 przez manjaro Nałogowiec (37,390 p.)

Wygląda poprawnie tylko po prawidłowym zalogowaniu nie masz żadnej akcji. Tam musisz wpisać albo utworzenie nowego całkiem okienka, albo zastosować Card Layout i zmienić layout. Popatrz sobie na yt najlepiej jak się z tego Card Layout korzysta. To jest całkiem proste.

A tak w ogóle to radzę korzystać z Netbeansa i programować wizualnie bo takie ręczne to jest jakiś hardkor. 

Netbeans login system

3 odpowiedzi

+1 głos
odpowiedź 25 czerwca 2018 przez Wiciorny Ekspert (270,170 p.)
Programowanie wielowątkowe  :) Threads/Runnable w tym kierunku szukaj ew. Node/Parent in GUI java
0 głosów
odpowiedź 25 czerwca 2018 przez Aisekai Nałogowiec (42,190 p.)
Czy jakbyś zrobił osobne klasy dziedziczące po (jeżeli w swingu piszesz) np BorderPane, z utworzonym GUI wedle upodobań i w razie potrzeby tylko podmieniał panel główny, to by nie zadziałało? W JavieFX to się chyba Root nazywało.
komentarz 25 czerwca 2018 przez Wiciorny Ekspert (270,170 p.)
zależy czy chcemy mieć 1o okienko stale wtedy można taką opcje, ale bardzo jest niekorzystna. Z kolei 2 okienka to już odpada
1
komentarz 26 czerwca 2018 przez Aisekai Nałogowiec (42,190 p.)
Mi tutaj to wyglądało na cos w zasadzie jakiegoś menu, ze wszystko w jednym okienku jest robione.

Czemu jest bardzo niekorzystna? Tzn rozumiem, ze znacząco to będzie zwiększać zużycie pamięci, bo jeśli założymy ze jest to coś na zasadzie menu i gry komputerowej, to wszystkie klasy Pane, będą musiały być zapamietane (albo wykorzystać Singletona), żeby się nie okazało że przy wejściu do np Menu cała gra się zresetuje. Trzeba będzie jakoś stopować aktywności z innych Pane'ow,  ale i tak tutaj trzeba byłoby zastosowac wątki. Pane jest tylko warstwa odpowiedzialną za GUI, natomiast wątki już będą odpowiedzialne za to co się dzieje pod spodem.
0 głosów
odpowiedź 26 czerwca 2018 przez trebuhhh Użytkownik (740 p.)
sam odkryłem swój błąd, wwaliłem wszystko na JFrame, a powininem na JPanel, przerabiam i może z JPanelem juz mi się uda;)
komentarz 27 czerwca 2018 przez Wiciorny Ekspert (270,170 p.)
nie ma takiej zasady...

Podobne pytania

0 głosów
1 odpowiedź 127 wizyt
pytanie zadane 28 czerwca 2020 w Java przez manager96 Bywalec (2,050 p.)
0 głosów
1 odpowiedź 335 wizyt
pytanie zadane 24 maja 2020 w Java przez zdridox Nowicjusz (210 p.)
0 głosów
3 odpowiedzi 1,008 wizyt
pytanie zadane 28 kwietnia 2018 w Java przez Azazello Nowicjusz (160 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...