różne klasy w jednym oknie swing

0

mam problem odnośnie "wymiany danych" w oknie.
mój problem polega na tym że klikając przycisk "dalej" program przechodzi do działania innej klasy, wciskając przycisk "back" wraca do wcześniejszej klasy. wszystko działa poprawnie, jednak boli mnie fakt że za każdym razem otwiera się nowe okno Javy. w jaki sposób ogarnąć program by było tylko jedno okienko i zmieniały się przyciski?
czytałem że można użyć setcontentpane() ale nie do końca wiem jak go użyć...

package cwiczebnie;



public class cwiczebneokno {
    public static void main(String[] args)
    {
        new Okno();
    }
} 
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;



public class Okno extends JFrame {
 
   
	

	public Okno() {
        super( "okno1" );
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(200, 300);
        setLocation(50,50);
        setLayout(new FlowLayout());
        class ButtonListener implements ActionListener{
	 public void actionPerformed(ActionEvent e){
		 EventQueue.invokeLater(new Runnable() {
	            @Override
	            public void run() {
	                new plaskie();
	            }
	        }); 
	 }
 }
       
        ButtonListener bl=new ButtonListener();
        ;
        
        JButton
        c2= new JButton("dalej");
       
        
        c2.addActionListener(bl);
        
        add(c2);
        setVisible(true);
        
    }
 
}
package cwiczebnie;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class plaskie extends JFrame {
	 
	   
	

		public plaskie() {
	        super( "okno2" );
	        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        setSize(200, 300);
	        setLocation(50,50);
	        setLayout(new FlowLayout());
	        class ButtonListener implements ActionListener{
		 public void actionPerformed(ActionEvent e){
			 EventQueue.invokeLater(new Runnable() {
		            @Override
		            public void run() {
		                new Okno();
		            }
		        }); 
		 }
	 }
	       
	        ButtonListener bl=new ButtonListener();
	        ;
	        
	        JButton
	        c2= new JButton("back");
	       
	        
	        c2.addActionListener(bl);
	        
	        add(c2);
	        setVisible(true);
	        
	    }
	 
	}
 
1

poczytaj o JPanel, z tego co jeszcze pamietam mozesz je pokazywac i chować w łątwy sposob ;)
http://javastart.pl/grafika_awt_swing/proste-rysowanie-jpanel-i-jcomponent/ tak na start
polecam również w youtube: coraxthetutor i jego poradniki Swingowe, znajdziesz tam też JPanel

0

Ja bym zrobił jeden Jframe i kilka JPaneli(nowe klasy), które są pokazywane po odpowiednim evencie. Wyżej @azalut w linku dał tutorial.

0

niestety żadna ze stron nie pomogła w rozwiązaniu problemu.

0

@dard pokaż kod, coś się poradzi :P

0

kod jest w pierwszym poście :)

0
  1. Oddziel gui od biznesu, poczytaj o MVC
  2. Traktuj okno jak zwykły obiekt
  3. Zamiast tworzyć kolejne okna możesz np. podmieniać panele ale musisz mieć referencje do nich (w konstruktorze klasy ćwiczebnie możesz dać referencje do panelu (plaskie), który chcesz podmienić)

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