0

簡単に言うと、隣接する 3 つのボタンがある信号機を表示する Java アプレットを設計したいと思います。赤い光を言うもの、琥珀色の光を言うもの、緑の光を言うもの。


私の問題は、各ボタンを正しい楕円形にリンクする方法がわからないことです。すべての楕円は、同じグラフィックス変数 g に属します。色を変えると、3 つすべてが変わります。

canvas と呼ばれるスーパークラスがあり、各オブジェクトを独自のエンティティに分離するのに役立ちますが、もっと簡単な方法があることはわかっています。

これどうやってするの?

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.applet.Applet;

public class Traffic extends Applet
    implements ActionListener
{

    int colourNum; //global variable which is responible for changing the light

    Button bttn1 = new Button ("Stop Traffic");
    Button bttn2 = new Button ("Caution");
    Button bttn3 = new Button ("Proceed");

    public void init ()
    {
        setBackground (Color.lightGray);

        bttn1.addActionListener (this); // stop light
        bttn2.addActionListener (this); // yellow light
        bttn3.addActionListener (this); // green light

        add (bttn1);
        add (bttn2);
        add (bttn3);
    }

    public void paint (Graphics g)  // responsible for graphics "within" the window
    {
        g.setColor (Color.black);

        switch (colourNum)
        {
            case 1:
                g.setColor (Color.red);
                break;
        }
        g.fillOval (30, 40, 20, 20); // red light
        g.fillOval (30, 70, 20, 20); // yello light
        g.fillOval (30, 100, 20, 20); // green light
    }


    public void actionPerformed (ActionEvent evt)
    {
        if (evt.getSource () == bttn1)
            colourNum = 1;
        else if (evt.getSource () == bttn2)
            colourNum = 2;
        else
            colourNum = 3;

        repaint ();
    }
}
4

1 に答える 1

2
public void paint (Graphics g)  // responsible for graphics "within" the window
{
    g.setColor (Color.black);

    g.setColor(colourNum == 1? Color.red : Color.red.darker().darker());
    g.fillOval (30, 40, 20, 20); // red light
    g.setColor(colourNum == 2? Color.yellow : Color.yellow.darker().darker());
    g.fillOval (30, 70, 20, 20); // yello light
    g.setColor(colourNum == 3? Color.green : Color.green.darker().darker());
    g.fillOval (30, 100, 20, 20); // green light
}
于 2013-02-22T19:28:22.000 に答える