如何在actionperformed中调用图形方法?

时间:2015-06-15 23:01:12

标签: java graphics applet awt actionevent

我是java的新手,想在ActionEvent中调用图形方法,例如,假设我想在按下按钮b时绘制一个正方形?感谢任何帮助,谢谢:

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

public class Cours2_2 extends Applet implements ActionListener {



Button a,b,c; 


public void init(){

        setBackground(Color.pink);

        a= new Button("KIRMIZI");
        a.addActionListener(this);
        add(a);

        b= new Button("BEYAZ");
        b.addActionListener(this);
        add(b);

        c= new Button("SARI");
        c.addActionListener(this);
        add(c);
    }
public void paint(Graphics g){
    g.drawString("s", 5, 5);
}



    public void actionPerformed(ActionEvent e){
    String s= e.getActionCommand();
    if(s.equals("KIRMIZI")){
        setBackground(Color.red);
    }
    if(s.equals("BEYAZ")){
        setBackground(Color.white);
    }
    if(s.equals("SARI")){
        setBackground(Color.yellow);
        }
    drawStrings(t);
    }
public void drawStrings(Graphics t) {
    t.setColor(Color.yellow);
    t.fillRect(0, 0, 75 ,75);
}


}

我想知道是否应该按下按钮作为方法或功能时创建我想要绘制的这个方块。感谢

1 个答案:

答案 0 :(得分:3)

  1. 避免使用Applet,如果您“真的”必须使用JApplet。话虽如此,您应该从JPanel开始,然后覆盖它的paintComponent方法(并确保在进行任何自定义绘制之前调用super.paintComponent。请查看Painting in AWT and SwingPerforming Custom Painting了解更多详情。
  2. 一般来说,AWT / Swing中的绘画是被动的,也就是说,当系统“决定”需要更新的东西时,它将被绘制。这意味着你(通常)几乎无法控制什么时候会画画。你提出了建议,但它是对系统的更新,以决定什么和何时被绘制。
  3. paint方法应该绘制组件的当前状态。这意味着您需要提供一些信息和逻辑,绘制方法可以使用这些信息和逻辑来决定绘制什么。例如,你可以有一个由ActionListener改变的标志,它在你的组件上调用repaint,当组件被绘制时,你将测试这个标志的状态并决定什么应该做(例如画一个正方形)。
  4. 更复杂的方法可能会使用List并利用Shape API,向List添加或删除形状,然后绘制方法可以迭代它们油漆

    看看Collections Trail2D Graphics了解更多详情