Stworzenie czegoś w rodzaju JButton w JButtonie

2015-01-18 02:34
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...

Pozostało 580 znaków

2015-01-18 03:34
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.
edytowany 1x, ostatnio: bogdans, 2015-01-18 08:12
!Wstawiaj kod w znaczniki <code=java></code> - bogdans 2015-01-18 08:13

Pozostało 580 znaków

2015-01-18 10:29
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...

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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