Problem z metodą

Odpowiedz Nowy wątek
2018-11-28 20:52
0

Witam, mam problem z metodą makeButton(), ponieważ dodaje tak jak chcę 3 buttons, jednak kolor zmienia się tylko na taki, jaki ma podane ostatnie wywołanie.
Wrzucam kod, aby pokazać o co mi chodzi


import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class SwingButtonFrameClassInner {
    public static void main(String[]args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                Frame frame=new Frame();
            }
        });
    }

}

class Frame extends JFrame{
    private JPanel buttonPanel;
    private Color background;

    public Frame(){

        setTitle("XD");
        setBounds(100,100,500,250);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        buttonPanel=new JPanel();
        makeButton("yellow",Color.YELLOW);
        makeButton("red",Color.RED);
        makeButton("green", Color.GREEN);
        add(buttonPanel);
        setVisible(true);

    }

    public void makeButton(String name, Color background) 
    {

        JButton button=new JButton(name);
        buttonPanel.add(button);
        ColorAction action=new ColorAction(background);
        button.addActionListener(action);

    }

    private class ColorAction implements ActionListener{

        public ColorAction(Color c) {
            background=c;
        }

        @Override
        public void actionPerformed(ActionEvent event) {
            buttonPanel.setBackground(background);
        }
    }
}

Pozostało 580 znaków

2018-11-28 20:58

Przenieś linijkę private Color background; z klasy Frame do klasy ColorAction i tyle.

Dzięki, nie wiem dlaczego sam na to nie wpadłem. - Heros826 2018-11-28 21:01

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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