Erstellen ActionEvent-Objekt für CustomButton in Java

Für eine hw-Zuordnung, sollten wir eine benutzerdefinierte Schaltfläche erstellen, um sich mit swing und reagieren auf Ereignisse. Wir waren auch um diese Schaltfläche eine Quelle, die mich verwirrt. Ich habe eine ArrayList, um zu verfolgen die Zuhörer, die würden registrieren zu hören, meine CustomButton. Was bin ich immer verwirrt ist, wie zu Benachrichtigen, die die Zuhörer. Mein Lehrer deutete an, dass eine Benachrichtigung und überschreiben actionPerformed, die ich habe versucht zu tun, aber damals war ich nicht sicher, wie Sie Sie erstellen ein ActionEvent-Objekt suchen, an den Konstruktor-Dokumentation. Die Quelle, id, string alle die mich verwirrt. Jede Hilfe würde geschätzt werden.

code:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.List;
import java.util.ArrayList;

public class CustomButton 
{
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                CustomButtonFrame frame = new CustomButtonFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }

    public void addActionListener(ActionListener al)
    {
        listenerList.add(al);
    }

    public void removeActionListener(ActionListener al)
    {
        listenerList.remove(al);
    }

    public void actionPerformed(ActionEvent e) 
    {
        System.out.println("Button Clicked!");
    }

    private void notifyListeners()
    {
        ActionEvent event = new ActionEvent(CONFUSED HERE!!!!;
        for (ActionListener action : listenerList) {
            action.actionPerfomed(event);
        }
    }

    List<ActionListener> listenerList = new ArrayList<ActionListener>();
}

class CustomButtonFrame extends JFrame
{
    //constructor for CustomButtonFrame
    public CustomButtonFrame()
    {
        setTitle("Custom Button");
        CustomButtonSetup buttonSetup = new CustomButtonSetup();
        this.add(buttonSetup);
        this.pack();
    }
}

class CustomButtonSetup extends JComponent 
{
    public CustomButtonSetup()
    {
        ButtonAction buttonClicked = new ButtonAction();
        this.addMouseListener(buttonClicked);
    }

    //because frame includes borders and insets, use this method
    public Dimension getPreferredSize()
    {
        return new Dimension(200, 200);
    }

    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;

        //first triangle coords
        int x[] = new int[TRIANGLE_SIDES];
        int y[] = new int[TRIANGLE_SIDES];
        x[0] = 0;   y[0] = 0;
        x[1] = 200; y[1] = 0;
        x[2] = 0;   y[2] = 200;
        Polygon firstTriangle = new Polygon(x, y, TRIANGLE_SIDES);

        //second triangle coords
        x[0] = 0;   y[0] = 200;     
        x[1] = 200; y[1] = 200;
        x[2] = 200; y[2] = 0;
        Polygon secondTriangle = new Polygon(x, y, TRIANGLE_SIDES);

        g2.drawPolygon(firstTriangle);
        g2.setColor(firstColor);
        g2.fillPolygon(firstTriangle);

        g2.drawPolygon(secondTriangle);
        g2.setColor(secondColor);
        g2.fillPolygon(secondTriangle);

        //draw rectangle 10 pixels off border
        int s1[] = new int[RECT_SIDES];
        int s2[] = new int[RECT_SIDES];
        s1[0] = 5;    s2[0] = 5;
        s1[1] = 195;  s2[1] = 5;
        s1[2] = 195;  s2[2] = 195;
        s1[3] = 5;    s2[3] = 195;
        Polygon rectangle = new Polygon(s1, s2, RECT_SIDES);
        g2.drawPolygon(rectangle);
        g2.setColor(thirdColor);
        g2.fillPolygon(rectangle);  
    }

    private class ButtonAction implements MouseListener {
        public void mousePressed(MouseEvent e)
        {
            System.out.println("Click!");
            firstColor = Color.GRAY;
            secondColor = Color.WHITE;

            repaint();
        }

        public void mouseReleased(MouseEvent e)
        {
            System.out.println("Released!");
            firstColor = Color.WHITE;
            secondColor = Color.GRAY;
            repaint();
        }

        public void mouseEntered(MouseEvent e)
        {}

        public void mouseExited(MouseEvent e)
        {}

        public void mouseClicked(MouseEvent e)
        {}
    }

    public static final int TRIANGLE_SIDES = 3;
    public static final int RECT_SIDES = 4;
    private Color firstColor = Color.WHITE;
    private Color secondColor = Color.DARK_GRAY;
    private Color thirdColor = Color.LIGHT_GRAY;
}

InformationsquelleAutor Crystal | 2010-05-27

Schreibe einen Kommentar