zmiana kształu - obsługa zdarzeń

Odpowiedz Nowy wątek
2011-12-17 18:11
0

Witam mam do zrealizowania pewne zadanie, chciałbym aby po naciśnięciu odpowiedniego przycisku w aplecie rysowała mi się odpowiednia figura (koło, kwadrat, trójkąt), gotowa jest już zmiana koloru po naciśnięciu danego przycisku. Głowny cel zadania to w sumie 9 przycisków - pierwsze 3 - kolory, kolejne 3 kształty i ostatnie 3 rozmiar figury(mały średni duży). Oto mój kod nie mogę rozgryźć zmiany kształtu po naciśnięciu przycisku.

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

public class drugie extends Applet 
implements ActionListener
{
Button b1,b2,b3,b4,b5,b6;
int[] a = {20 ,12, 21};
int[] b = {124, 234, 321};
Color f1,f2,f3;
Color CurrentColor;
Graphics CurrentShape;
Graphics p1 = null, p2 = null, p3 = null;
public void paint(Graphics g)
{
    g.setColor(CurrentColor);
    g.fillRect(50, 100, 50, 50);    
}
public void init()
{
f1 = new Color(255,0,0);
f2 = new Color(0,255,0);
f3 = new Color(0,0,255);
//p1 = new Graphics;
b1 = new Button("Czerwony");
b2 = new Button("Zielony");
b3 = new Button("Niebieski");
b4 = new Button("Kwadrat");
b5 = new Button("Koło");
b6 = new Button("Trójkąt");
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
add(b6);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
    Object ob1 = e.getSource();
        if(ob1 == b1)
        {
            CurrentColor = f1;
            this.repaint();
        }
        if(ob1 == b2)
        {
            CurrentColor = f2;
            this.repaint();
        }
        if(ob1 == b3)
        {
            CurrentColor = f3;
            this.repaint();
        }
        if(ob1 == b4)
        {
            ((Graphics) p1).fillRect(50, 100, 50, 50);
            this.repaint();
        }
        if(ob1 == b5)
        {
            ((Graphics) p2).fillOval(50, 100, 50, 50);
            this.repaint();
        }
        if(ob1 == b6)
        {
            ((Graphics) p3).fillArc(50, 100, 50, 50, 60, 60);
            this.repaint();
        }           
}
}

Pozostało 580 znaków

2011-12-17 18:41
bo
0
                if(ob1 == b3)
                {
                        CurrentColor = f3;
                        this.repaint();
                }
                if(ob1 == b4)
                {
                        ((Graphics) p1).fillRect(50, 100, 50, 50);
                        this.repaint();
                }

Widzisz różnicę? W pierwszym przypadku (ob1==b3) zmieniasz pewien parametr i wymuszasz odmalowanie. W drugim przypadku powinieneś zrobić tak samo, zmienić figurę (CurrentShape) i wymusić odmalowanie. Funkcja paint() powinna powinna wyglądać tak:

public void paint(Graphics g)
{
    super.paint(g);
    g.setColor(CurrentColor);
    narysuj CurrentShape
}

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