我在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);
}
}
答案 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。