Как получить доступ к свойствам каждого круга? - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь создать светофор для класса. Нам не разрешено использовать IDE, так что это делается в текстовой панели. Как мне получить доступ к свойствам каждого отдельного круга, чтобы я мог сделать один красный, зеленый, желтый?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class Lab4Panel extends JPanel implements MouseListener {


public Lab4Panel(){
}

    JRadioButton red = new JRadioButton("Red", true);
    JRadioButton yellow = new JRadioButton("Yellow");
    JRadioButton green = new JRadioButton("Green");

int height, width;
int radius = 5;
int x = -1;
int y = -1;

protected void paintComponent(Graphics g){
    if (x<0 || y<0) {
        x = getWidth() / 2 - radius;
        y = getHeight() / 2 - radius;
    }
    super.paintComponent(g);
    g.drawRect(x - 5,y - 90, 40, 120);
    g.drawOval(x,y - 80, 4 * radius, 4 * radius);
    g.drawOval(x,y - 40, 4 * radius, 4 * radius);
    g.drawOval(x,y, 4 * radius, 4 * radius);

}




        public void mouseClicked(MouseEvent e)
            {
                if (e.getSource() == red){

                }

                else if (e.getSource() == yellow){

                }

                else if (e.getSource() == green){

                }



            }

    public void mouseExited(MouseEvent e){}
    public void mouseReleased(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseMoved(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
}

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

В вашем случае важным изменяемым объектом является Graphics объект g. Измените текущий цвет на g, прежде чем рисовать каждый овал:

g.setColor(Color.RED);
g.fillOval(x,y - 80, 4 * radius, 4 * radius);
g.setColor(Color.YELLOW);
g.fillOval(x,y - 40, 4 * radius, 4 * radius);
g.setColor(Color.GREEN);
g.fillOval(x,y, 4 * radius, 4 * radius);

Используйте fillOval() javadoc , чтобы заполнить овал, вместо того, чтобы просто рисовать контур.

1 голос
/ 14 февраля 2012

Используйте метод Graphics # setColor для установки текущего цвета. Затем все последующие операции рисования используют этот цвет, пока не будут изменены.

Также вы можете использовать метод Graphics # fillOval для рисования сплошных кругов с текущим цветом.

Ваш код становится примерно таким:

g.drawRect(x - 5,y - 90, 40, 120);
g.setColor(Color.RED);
g.fillOval(x,y - 80, 4 * radius, 4 * radius);
g.setColor(Color.YELLOW);
g.fillOval(x,y - 40, 4 * radius, 4 * radius);
g.setColor(Color.GREEN);
g.fillOval(x,y, 4 * radius, 4 * radius);

У меня могут быть цвета не в порядке, но общая идея остается.

1 голос
/ 14 февраля 2012

Вы устанавливаете цвет в контексте рисования: g.setColor( new Color( 255,0,0 ) ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...