public void paint(Graphics g) {
myWidth = getSize().width; // get this Applet size
myHeight = getSize().height;
double xCoord, yCoord;
int yPixel;
String str = JOptionPane.showInputDialog("Enter your name.");
g.drawString(str, 100, 100);
for (int xPixel = 0; xPixel < myWidth; xPixel++) {
xCoord = (double) (xPixel - myYAxisHPos) / myXUnitPixels;
yCoord = f(xCoord);
yPixel = (int) (myXAxisVPos - yCoord * myYUnitPixels);
g.drawLine(xPixel, yPixel, xPixel, yPixel);
}
}
我想知道为什么在我启动applet时它会打开两次。任何帮助将不胜感激。
答案 0 :(得分:3)
public void paint(Graphics g)
{
..
String str = JOptionPane.showInputDialog("Enter your name.");
永远不要在paint(Graphics)
方法中更改GUI或弹出模式对话框!后者将阻止EDT,两者都将导致循环。
我想知道为什么在我启动applet时它会打开两次
可以随时调用Paint,它不在程序员的控制之内。
相反,该方法应移至init()
方法,并将结果存储为类属性。
类似的东西:
String str = null;
@Override
public void init() {
str = JOptionPane.showInputDialog("Enter your name.");
//..
}
答案 1 :(得分:0)
虽然你通常使用draw方法调用paint
方法{J}调用方法是由JVM调用你无法控制它。不要在其中使用JOptionPane。每次paint
或frame
获取刷新panel
方法都会被调用。