2014-07-15 31 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()以便使用更改繪製小程序。

相關問題