【问题标题】:how to call a graphical method in actionperformed?如何在actionperformed中调用图形方法?
【发布时间】:2015-08-31 14:36:38
【问题描述】:

我对 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);
}


}

我想知道我是否应该创建这个我想在按下按钮时作为方法或函数绘制的正方形。谢谢

【问题讨论】:

    标签: java graphics applet awt actionevent


    【解决方案1】:
    1. 避免使用Applet,如果你“真的”不得不使用JApplet。话虽如此,您应该从JPanel 开始并覆盖它的paintComponent 方法(并确保在进行任何自定义绘画之前调用super.paintComponent。请查看Painting in AWT and SwingPerforming Custom Painting 了解更多详细信息。
    2. 一般来说,AWT/Swing 中的绘制是被动的,即当系统“决定”某些东西需要更新时,它就会被绘制。这意味着您(通常)几乎无法控制何时绘制某些东西。您提出建议,但系统会更新以决定绘制内容和时间。
    3. paint 方法应该绘制组件的当前状态。这意味着您将需要提供一些信息和逻辑,绘制方法可以使用这些信息和逻辑来决定绘制什么。例如,您可以有一个标志,它由ActionListener 更改,它在您的组件上调用repaint,当组件被绘制时,您将测试此标志的状态并决定应该做什么(比如画一个正方形)。

    更复杂的方法可能是使用List 并利用Shape API,向List 添加或删除形状,然后paint 方法将能够对其进行迭代和绘制

    看看Collections Trail2D Graphics了解更多详情

    【讨论】:

    • 非常感谢!我真的很感谢你的帮助。问题是我是计算机工程专业的本科生,教授选择了小程序方法而不是使用应用程序。这段代码对我来说的主要问题是我应该如何处理我最后使用的函数drawStrings(t);,以及如何在执行的操作中调用它,再次感谢
    • 摆脱drawString,将其功能移至paint。在 actionPerformed 方法结束时调用 repaint
    • "..教授选择了applet方法而不是应用程序。" 1) 挑战教授制作一个简单的applet并放上去在Uni的网站上供学生访问。我敢打赌,她/他此后不会那么热衷于他们了。 2) 请将他们推荐给Why CS teachers should stop teaching Java applets
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 2013-03-05
    • 1970-01-01
    • 2017-10-21
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多