Stworzenie czegoś w rodzaju JButton w JButtonie

0

Chcialbym stworzyć sobie tak jakby "JButton w JButtonie"
Czyli jak wcisne jakis JButton to pojawi się nowy JButton i bedzie mial nową akcje (Np wypisuje cos na ekran)

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

import javax.swing.*;


public class Test extends JFrame implements ActionListener
{
    JButton Pokaz=new JButton();
 
 
    Test()
    {
        setSize(1024,768);
        setLayout(null);
        Pokaz.setBounds(200,200, 100, 40);
        add(Pokaz);
        Pokaz.addActionListener(this);
 
    }
 
    public void actionPerformed(ActionEvent e) 
    {
 
 
        Object zrodlo = e.getSource();
        if(zrodlo==Pokaz)
        {
            JButton wypisz=new JButton("Wypisz");
            add(wypisz);
 
            Pokaz.setBounds(200,400, 100, 40);
            wypisz.addActionListener(this);
            if(zrodlo==wypisz)
            {
                System.out.println("ABcDEF");
            }
        }
 
    }
 
    public static void main(String[] args)
    {
        Test aplikacja = new Test();
        aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        aplikacja.setVisible(true);
    }
 
}

Niestety, to nie działa poprawnie, choć powinno moim zdaniem...

0
 JButton Pokaz=new JButton();

Nazwy zmiennych powinieneś pisać z małej litery, tak na przyszłość.

 Object zrodlo = e.getSource();
        if(zrodlo==Pokaz)
        {
            JButton wypisz=new JButton("Wypisz");
            add(wypisz);
 
            Pokaz.setBounds(200,400, 100, 40);
            wypisz.addActionListener(this);
            if(zrodlo==wypisz)
            {
                System.out.println("ABcDEF");
            }
        }
  1. Pokaz.setBounds(200,400, 100, 40); - zapewne miało być wypisz.setBounds(200,400, 100, 40);
  2. System.out.println("ABcDEF"); - nigdy się nie wykona, zobacz że najpierw sprawdzasz czy zrodło jest obiektem Pokaz a później spawdzasz czy zrodlo jest rowne wypisz. Jeżeli pierwsze jest prawdziwe to niemożliwe jest drugie.
0
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class Test extends JFrame implements ActionListener
{
	JButton Pokaz=new JButton();
	
	JButton wypisz=new JButton("Wypisz");
	
	
	
	
	
	Test()
	{
		setSize(1024,768);
		setLayout(null);
		wypisz.setBounds(200,400, 100, 40);
		Pokaz.setBounds(200,200, 100, 40);
		add(Pokaz);
		Pokaz.addActionListener(this);
		wypisz.addActionListener(this);
	}

	public void actionPerformed(ActionEvent e) 
	{
		Object z=e.getSource();
	
		if((Pokaz==z)||(wypisz==z))
		{
			
			add(wypisz);
			repaint();
			if(z==wypisz)
			{
				System.out.println("ABcDEF");
				remove(wypisz);
			}
		}
		
	}
	
	public static void main(String[] args)
	{
		Test aplikacja = new Test();
		aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		aplikacja.setVisible(true);
	}

}

Teraz wydaje sie działać, ale chyba jest mało profesjonalnie...

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