2014-07-15 29 views
0

我在Eclipse中编写了一个简单的Java Applet代码。 它是一个厘米转换器代码。 仅当Applet处于最大化模式时才显示结果。 当我单击提交按钮时,在最小化模式下,结果不显示。但是如果我最大化Applet,不改变applet中的任何内容,就会显示答案。 这是为什么? 我的其他代码在最小化模式下工作正常。Java Applet只能在最大化模式下工作

以下是要在paint方法单击按钮进行编写逻辑actionperformed不是代码

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

回答

0

你已经写逻辑。

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方法被调用并显示结果。

重绘方法是让你显式调用paint方法在applet.repaint方法管理update->paint周期的方式,以便在第一时间,当你试图重新绘制它调用,如果你的小程序需要update.You应该使用repaint任何调整大小,缩放更改或运行时的其他外观变化,那么您必须包含一个repaint()以便使用更改绘制小程序。

相关问题