Swing kilka przełączanych paneli

0

Witajcie, szukałem trochę po internecie i nie mogę znaleźć dobrego rozwiązania mojego problemu, a konkretnie jak zrobić kilka paneli z komponentami albo coś co będzie zmieniać wszystkie elementy w oknie po naciśnięciu przycisku.
Program ma działać tak że po przyciśnięciu przycisku w swingworkerze sprawdzana jest poprawność danych w bazie, aktualizacja danych w GUI itp. i jeśli są poprawne zalogowanie się do programu co przełączy zawartość okna na nową jednak nie mogę znaleźć rozwiązania które zachowuje działanie actionlistenera i odpowiedni sposób tworzy panele które można przełączać.

 import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingWorker;

public class ClientFrame extends JFrame implements ActionListener {
	
	private JButton zalogujB;
	private JButton rejestracjaB;
	private JTextField loginTF; 
    private JPasswordField hasloPF;
	

	public ClientFrame() {
		super( "SPAW - Client" );
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(640, 480);
		setLocation(50,50);
		setLayout(new GridLayout(4, 1));

		add(loginTF = new JTextField());
		add(hasloPF = new JPasswordField());
		
		add(zalogujB = new JButton("Zaloguj"));
		add(rejestracjaB = new JButton("Rejestracja"));
		zalogujB.addActionListener(this);
		rejestracjaB.addActionListener(this);
		
		
		setSize(640, 480);
		setLocation(50,50);
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		
		if(source == zalogujB){
			start();
		}
		if(source == rejestracjaB){
			start2();
		}
			
		
	}

	private void start(){
		SwingWorker <String, Void> worker = new SwingWorker <String, Void>(){

			@Override
			protected String doInBackground() throws Exception {
				for(int i=0;i<10;i++){
					Thread.sleep(100);
					System.out.println(i);
					
				}
				return null;
			}

			protected void done() {
				// TODO Auto-generated method stub
				loginTF.setText("Gotowe");
			}
			
			
		};
		worker.execute();
	}
	private void start2(){
		SwingWorker <String, Void> worker2 = new SwingWorker <String, Void>(){

			@Override
			protected String doInBackground() throws Exception {
				for(int i=0;i<10;i++){
					Thread.sleep(100);
					System.out.println(i);
					
				}
				return null;
			}

			protected void done() {
				// TODO Auto-generated method stub
				loginTF.setText("Gotowe2");
			}
			
			
		};
		worker2.execute();
	}

	
}
1

poczytaj o JTabbedPane może to jest rozwiązanie Twojego problemu. Ewentualnie zapoznaj się z Link jest tam przykład jak podmieniać panele.

0

Dzięki, JTabbedPane to nie to czego szukałem, ale ten link rozwiązał mój problem.

0

CardLayout mógł by rozwiązać problem ale zrobiłem tak że czyszczę okno i wczytuje nowy panel.

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