Java Applet仅适用于最大化模式

时间:2014-07-15 09:25:46

标签: java applet awt

我在Eclipse中编写了一个简单的Java Applet代码。 它是Cenmeter to Meter转换器代码。 它仅在Applet处于最大化模式时显示结果。 在单击“提交”按钮时,在最小化模式下,不显示结果。但是,如果我最大化Applet,则不会更改applet中的任何内容,将显示答案。 为什么会这样? 我的其他代码在最小化模式下工作正常。

以下是代码

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

public class convert extends Applet implements ActionListener {

    private static final long serialVersionUID = 1L;
    Button a;
    String msg ="";
    String msg1 = "";
    String msg2 = "";

    TextField m,n;
    Label l,p;
    float x,y;
    public void init()
    {
        setLayout(new GridLayout(5,5));
        a = new Button("Submit");
        m = new TextField(msg,10);
        n = new TextField(msg,10);
        l = new Label("IN CM");
        p = new Label("IN M");
        add(l);
        add(m);
        add(a);
        add(p);
        add(n);
        a.addActionListener(this);
        m.addActionListener(this);
        n.addActionListener(this);
    }

    public void actionPerformed(ActionEvent ae)
    {
       msg1 = ae.getActionCommand();
       if(msg1.equals("Submit"))
       {
       repaint();}
    }   
    public void paint(Graphics g)
    { 
        msg2 = m.getText();     
            x = Integer.parseInt(msg2);
            y = x/100;
            msg = y + "";
            n.setText(msg);
    }
}

1 个答案:

答案 0 :(得分:0)

你想要在paint方法中点击按钮时执行的逻辑写入actionperformed中的逻辑。

 public void actionPerformed(ActionEvent ae){
    msg1 = ae.getActionCommand();
    if(msg1.equals("Submit")){
       msg2 = m.getText();     
       x = Integer.parseInt(msg2);
       y = x/100;
       msg = y + "";
       n.setText(msg);
  }
}   

现在,当您尝试调整窗口大小时,将调用paint方法并显示结果。

重绘方法是你在applet中显式调用paint方法的方法.repaint方法管理update->paint周期,所以当你第一次尝试重绘它时,调用update.You应该使用{{ 1}}如果您的applet在运行时需要任何大小调整,缩放更改或其他外观更改,那么您必须包含repaint来绘制带有更改的applet。