Przycisk/TextField

0

Cześć!
Mam problem. Poniżej kod a potem opiszę o co chodzi:

import javax.swing.*;
import java.awt.*;


public class Okienko extends JFrame {


    public Okienko() {
        super("Nowe Okno");
        JPanel addNewText = new Przycisk();
        add(addNewText);

        setLocation(450, 200);
        setSize(300, 400);
        setVisible(true);

        setLayout(new FlowLayout(FlowLayout.CENTER));
        
    }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Przycisk extends JPanel implements ActionListener {
    public static final int HEIGHT = 100;
    public static final int WIDTH = 300;
    private JButton openButton;
    private JButton addNewText;

    public Przycisk() {
        openButton = new JButton("Otwórz nowe okno");
        addNewText = new JButton("Dodaj");

        openButton.addActionListener(this);
        addNewText.addActionListener(this);

        setLayout(new FlowLayout());
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        add(openButton);
    }



    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();

        if (source == new Okienko()) {
        //jesli nacisne na przycisk otwiera sie nowe Okienko.
        }

    }
}


import javax.swing.*;
import java.awt.*;

public class NoweOkno extends JFrame {

    public NoweOkno(){
        super("Główne Okno");
        JPanel openButton = new Przycisk();
        add(openButton);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //zamkniecie okna
        setLocation(550, 200); //lokalizacja na ekranie
        setSize(500, 700); // rozmiar okna
        setVisible(true);
        setLayout(new FlowLayout(FlowLayout.CENTER));

    }

}

Otóż chodzi mi o to, że gdy po naciśnięciu przycisku otwiera mi się nowe okno ale dalej z tym samym przciskiem. Chce aby w Klasie Okienko był całkiem inny Przycisk niż w Klasie NoweOkno. Nie wiem jak mam to zrobić. Czy każdy nowy przycisk z nową funkcjonalnością to ma być nowa klasa?

@Edit
W głównym oknie ma być 1 przycisk który będzie otwierał nowe okno. W nowym oknie ma być przycisk i textfield. Przycisk ma dodać rzeczy wpisane w textfield do listy która będzie na dole.

1

Klasa Przycisk jest ta sama tu i tu, więc robi to samo, nie? To, że nazwiesz w jednej klasie ją openButton, a w drugiej addNewText (przez przypadek tak jak w klasie Przycisk), to ich nie różnicuje...

Zastanów się, skąd kompilator ma wiedzieć, co chcesz osiągnąć...

0

Dobra, a mogę zrobić tak ze klasę przycisk usunę i zrobię coś takiego:


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class NoweOkno extends JFrame implements ActionListener {
    private JButton openButton;

    public NoweOkno() {
        super("Główne Okno");
        openButton = new JButton("Otwórz nowe okno");

        openButton.addActionListener(this);


        add(openButton);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //zamkniecie okna
        setLocation(550, 200); //lokalizacja na ekranie
        setSize(500, 700); // rozmiar okna
        setVisible(true);
        setLayout(new FlowLayout(FlowLayout.CENTER));

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();

        if (source == new Okienko()) {
            //jesli nacisne na przycisk otwiera sie nowe Okienko.
        }
    }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Okienko extends JFrame implements ActionListener {
    private JButton addNewText;

    public Okienko() {
        super("Nowe Okno");
        addNewText = new JButton("Dodaj");

        addNewText.addActionListener(this);
        add(addNewText);

        setLocation(450, 200);
        setSize(300, 400);
        setVisible(true);

        setLayout(new FlowLayout(FlowLayout.CENTER));

    }

    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();


    }
}

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